C语言中字符指针赋值""和NULL的区别
2013-03-25 17:49
302 查看
在C程序中对一个字符指针赋值""和NULL是不一样的,代码如下:
前者为p分配了内存空间用于保存一个指针(32位机上及4字节),后者不为q分配空间。所以调用strlen时,前者返回0,后者将产生错误。
同样,用printf的%p打印二者的地址时,前者会返回一个32位的地址值,而后者则返回(nil)。
注:以上在gcc下调试。
char *p=""; char *q=NULL;
前者为p分配了内存空间用于保存一个指针(32位机上及4字节),后者不为q分配空间。所以调用strlen时,前者返回0,后者将产生错误。
同样,用printf的%p打印二者的地址时,前者会返回一个32位的地址值,而后者则返回(nil)。
注:以上在gcc下调试。
相关文章推荐
- C语言字符指针和字符数组的区别
- C语言_为什么字符串可以赋值给字符指针变量,字符串的属性及存放位置
- C语言笔记——字符数组与字符指针的区别
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- C语言中,为什么字符串可以赋值给字符指针变量
- c语言中字符数组和字符指针的区别:(一句话,一旦要修改就用字符数组)
- ""与null区别 空指针异常机理
- C语言中关于字符数组与字符指针的本质区别
- C语言中的字符指针与字符数组的一点区别
- C语言 0x0,0,null,NULL,'0',"0",' '," "等区别
- c语言中字符指针与字符数组的区别
- C语言 字符指针和字符数组的区别
- C语言中字符数组和指向字符数组的指针的区别
- C/C++拾遗————空指针{NULL/0/(void*)0}与 空字符{null/'0'} 区别
- C语言字符串指针与字符数组的区别
- c语言中的字符类型指针赋值字符串常量
- C语言中,为什么字符串可以赋值给字符指针变量
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- C语言字符串指针变量与字符数组的区别
- 指针指向空字符串和指针赋值为NULL的区别