sizeof与strlen比较(size_t即unsigned long)
sizeof获取操作数占用的内存空间字节数,返回类型size_t;
strlen获取字符数组实际使用的字节数,不包含数组结尾符‘\0‘,返回类型size_t;
\0的ASCII码值是0,都是字符串(例:"jack" == ‘j‘ + ‘a‘ + ‘c‘ + ‘k‘ + ‘\0‘) char name[8] = "it"; char name2[8] = {‘i‘, ‘t‘, ‘\0‘}; char name3[8] = {‘i‘, ‘t‘, 0}; char name4[8] = {‘i‘, ’t‘};
不算是一个字符串(只能说是一个字符数组)
char name5[] = {‘i‘, ‘t’};
\0作用
1、字符串结束的标记
2、printf("%s", name2);
会从name2这个地址开始输出字符,直到遇到\0为止
char name[] = "itc\0ast”;
输出只是itc
char name2[] = {‘o‘, ‘k’};
printf("%s\n", &name2[1]);
输出:kitc
strlen函数:计算字符串长度
1.计算的是字符数,并不是字数。一个汉字算作3个字符
2.计算的字符不包括\0
3.从某个地址开始数字符的个数,直到遇到\0为止
输入字符串:scanf("%s", str);
输入字符串(错误):
// do
// {
// scanf("%c",&str[i]);
// }while (str[i++]!=‘\n‘);
因为相当于在输入时将回车也输入
字符串数组:
初始化:
char names[2][10] = { {‘J‘,‘a‘,‘y‘,‘\0‘}, {‘J‘,‘i‘,‘m‘,‘\0‘} };
char names2[2][10] = { {"Jay"}, {"Jim"} };
char names3[2][10] = { "Jay", "Jim" };
putchar输出一个字符