#include <string.h> main() {char *p="abcde\0fghjik\0"; printf("%d\n",sizeof(p)); }
输出是2
#include <string.h> main() {char p[]="abcde\0fghjik\0"; printf("d\n",sizeof(p)); }
输出是14
为何?
#include <string.h> main() {char *p="abcde\0fghjik\0"; printf("%d\n",sizeof(p)); }
输出是2
#include <string.h> main() {char p[]="abcde\0fghjik\0"; printf("d\n",sizeof(p)); }
输出是14
为何?
#include <string.h> main() {char *p="abcde\0fghjik\0"; printf("%d\n",sizeof(p)); }
输出是2
#include <string.h> main() {char p[]="abcde\0fghjik\0"; printf("d\n",sizeof(p)); }
输出是14
为何?
第一个是2,那是因为你的sizeof(p)指的是该指针所占的内存大小,对于我的机子是4个字节,因此输出是4,但你的机子是2,不同的机子不同。
第二个是14,因为它计算的是该数组所占的空间,虽然该字符串有'\0',但因为你是用双引号引起来的,所以系统又自动在最后加了个'\0',所以共是14。
我知道vc6编译器会把字符串"\0xx"(x为小与8的数字)转变为八进制数xx对应的ascii字符,但是也得不出12来啊,lz用的是什么编译器如此神奇......