直接给代码
char *c="abcdef";
char d[]="abcdef";
char e[]={'a','b','c','d','e','f'};
printf("sizeof(c):%d\tstrlen(c):%d\n",sizeof(c),strlen(c));
printf("sizeof(d):%d\tstrlen(d):%d\n",sizeof(d),strlen(d));
printf("sizeof(e):%d\tstrlen(e):%d\n",sizeof(e),strlen(e));
输出结果是
4 6
7 6
6 14
求原因,最好是把根本原因说出来,这些数据在内存中怎么存放,机器读取时候的机制,谢谢!
c语言 字符数组、字符指针、sizeof strlen的区别为:数据长度不同、操作不同、所占空间不同。
一、数据长度不同
1、字符数组:字符数组需要在初始化时就定义字符数组的数据长度。
2、字符指针:字符指针的数据长度由指针指向的字符数据决定。
3、sizeof strlen:sizeof strlen自动确定sizeof strlen的数据长度。
二、操作不同
1、字符数组:字符数组里的数据内容可以进行增删改操作。
2、字符指针:字符指针只是展示指向的字符数据,字符指针里的数据内容不可以进行增删改操作。
3、sizeof strlen:sizeof strlen里的数据内容可以进行增删改操作。
三、所占空间不同
1、字符数组:字符数组的所占空间以初始化时定义的数据长度决定,不会发生改变。
2、字符指针:字符指针的所占空间较小,只存放指向字符数据的指针地址。
3、sizeof strlen:sizeof strlen的所占空间根据现有的数据长度自动发生改变。