在C程序中对一个字符指针赋值""和NULL是不一样的,代码如下:
char *p=""; char *q=NULL;
前者为p分配了内存空间用于保存一个指针(32位机上及4字节),后者不为q分配空间。所以调用strlen时,前者返回0,后者将产生错误。
同样,用printf的%p打印二者的地址时,前者会返回一个32位的地址值,而后者则返回(nil)。
注:以上在gcc下调试。
在C程序中对一个字符指针赋值""和NULL是不一样的,代码如下:
char *p=""; char *q=NULL;
前者为p分配了内存空间用于保存一个指针(32位机上及4字节),后者不为q分配空间。所以调用strlen时,前者返回0,后者将产生错误。
同样,用printf的%p打印二者的地址时,前者会返回一个32位的地址值,而后者则返回(nil)。
注:以上在gcc下调试。
转载于:https://www.cnblogs.com/knd2/archive/2013/03/25/2981164.html