C语言中容易混淆的问题

字符数组与字符串

1.C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。
2.字符串结束标志'\0',c语言中字符串总是以'\0'作为结尾。
3.字符串会自动在结尾补'\0'。
4.用字符数组存储字符串时,要特别注意'\0',要为'\0'留个位置,所以字符数组的长度至少要比字符串的长度大 1。

char str[7] = "abc123";
或者
char str[] = "abc123";

5.逐个为字符数组赋值时,容易遗忘补字符串结束标志'\0',可以将字符数组所有元素都初始化为“零”值。

char str[30] = {0}; //将所有元素都初始化为 0,或者说 '\0'

6.字符数组长度是固定的,其中任何一个数组元素都可以为 null('\0') 字符。

char str[32] = "abc123";
printf("%d\n",sizeof(str)); \\32 数组固定长度,其它没有赋值的元素为'\0'
printf("%d\n",strlen(str)); \\6 字符个数

7.字符串长度。
所谓字符串长度,就是字符串包含了多少个字符(不包括最后的结束符'\0')。

char *str = "abc123";
printf("%d\n",strlen(str)); //6


指针函数和函数指针

指针函数:指函数的返回值为指针,即本质是一个函数。函数返回类型是某一类型的指针。

int *f(x,y);  /* 声明一个函数 */

函数指针:指向函数的指针变量,即本质是一个指针变量。

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* 将func函数的首地址赋给指针f */ 
//f=&func;

指针数组和数组指针

指针数组:存储指针的数组,可以理解为"指针的数组"。

数组指针:指向数组的指针,本质是指针,只是指向数组。

猜你喜欢

转载自www.cnblogs.com/-wenli/p/12300037.html