C语言中没有字符串类型。
"Hello world!\n",这种由双引号引起来的一串字符串称为字符串字面值,或者简称字符串。
#include <stdio.h>
int main(){
char arr[] = "abcd";
printf("sizeof(arr)=%d\n", sizeof(arr));
return 0;
}
按下键盘上的F10,进入调试,
然后再点击界面第一行的调试-窗口-监视-监视1,2,3,4(随便点一个)
输入arr,结果如图:
字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容。
控制台上输出的结果如图,arr数组的大小为5个字节。
进一步探究字符数组,字符串在内存中的存放方式
#include <stdio.h>
int main(){
char arr1[] = "abcd";
char arr2[] = {'a','b','c','d'};
char arr3[] = {'a','b','c','d','\0'};
printf("%s\n",arr1);
printf("%s\n",arr2);
printf("%s\n",arr3);
printf("sizeof(arr1)=%d\n", sizeof(arr1));
printf("sizeof(arr2)=%d\n", sizeof(arr2));
printf("sizeof(arr2)=%d\n", sizeof(arr3));
return 0;
}
调试得到的内存存放结果如图:
输出结果如图:
字符串的结束标志是一个\0的转义字符,打印时遇到它才会停下来。字符数组arr2存放的这种方式打印时不知道内存是怎么存放的,不知道什么时候才能碰到\0结束打印,所以很有可能打印时会出现乱码,所以采用这种方式存字符串时,记得在最后补一个\0。
#include <stdio.h>
#include <string.h>
int main(){
char arr1[] = "abcd";
char arr2[] = {'a','b','c','d'};
char arr3[] = {'a','b','c','d','\0'};
int len1 = strlen(arr1);
int len2 = strlen(arr2);
int len3 = strlen(arr3);
printf("%s\n",arr1);
printf("%s\n",arr2);
printf("%s\n",arr3);
printf("%d\n",len1);
printf("%d\n",len2);
printf("%d\n",len3);
printf("sizeof(arr1)=%d\n", sizeof(arr1));
printf("sizeof(arr2)=%d\n", sizeof(arr2));
printf("sizeof(arr2)=%d\n", sizeof(arr3));
return 0;
}
strlen()是求字符串长度的一个函数,使用时要包含头文件<string.h>。
结果如图: