给字符指针赋值, ” “双引号与' '单引号的区别
来源:互联网 发布:博优化纤招聘 编辑:程序博客网 时间:2024/06/04 23:19
今天写demo,输出一个字符数组时,发现指针越界输出。回头一看,发现是这样给字符指针赋值的:
char *cP_1 = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
不严格的说,这样赋值并没有错,只是跟下面这种赋值方法有一些需要注意的区别:
char *cP_2 = “abcde”;
这两种方法有什么区别呢?首先要明白” abcde”是一个字符串,它以’ \0 ’ 结尾,输出它的完整值,应该为:{’a’,’b’,’c’,’d’,’e’,’\0’} 。而‘ a ‘只是一个字符,仅仅代表一个单纯的字符值。
第一种情况下,指将单个独立字符成的字符数组赋值给char * cP_1 ,同时指向第一个字符’a’的地址。但是这种情况下sizeof(cP_1) = 5。
第二种情况下,是将字符串赋值给char *cP_1,cP_1指向的是字符串的首地址。
sizeof(a) = 5+1=6; //!< 1为 ‘\0’。
显而易见,用第一种方法赋值时,字符数组后面没有结束符 ‘\0’,第二种会自动添加’’\0”。因此,需要我们注意的是,当采用第一种方法赋值时,需要在后面加上结束符 ‘\0’。
如: char *cP_1 = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘\0’}; //!< 不会越界
char *cP_1 = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
不严格的说,这样赋值并没有错,只是跟下面这种赋值方法有一些需要注意的区别:
char *cP_2 = “abcde”;
这两种方法有什么区别呢?首先要明白” abcde”是一个字符串,它以’ \0 ’ 结尾,输出它的完整值,应该为:{’a’,’b’,’c’,’d’,’e’,’\0’} 。而‘ a ‘只是一个字符,仅仅代表一个单纯的字符值。
第一种情况下,指将单个独立字符成的字符数组赋值给char * cP_1 ,同时指向第一个字符’a’的地址。但是这种情况下sizeof(cP_1) = 5。
第二种情况下,是将字符串赋值给char *cP_1,cP_1指向的是字符串的首地址。
sizeof(a) = 5+1=6; //!< 1为 ‘\0’。
显而易见,用第一种方法赋值时,字符数组后面没有结束符 ‘\0’,第二种会自动添加’’\0”。因此,需要我们注意的是,当采用第一种方法赋值时,需要在后面加上结束符 ‘\0’。
如: char *cP_1 = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘\0’}; //!< 不会越界
0 0
- 给字符指针赋值, ” “双引号与' '单引号的区别
- C/C++中,为什么字符串可以赋值给字符指针变量,单引号和双引号的区别
- " "(双引号)与 ' '(单引号)的区别
- 单引号与双引号的区别
- 单引号与双引号的区别
- PHP中单引号与双引号的区别
- PHP中单引号与双引号的区别
- asp中单引号与双引号的区别
- PHP中单引号与双引号的区别
- PHP中单引号与双引号的区别
- SQL中单引号与双引号的区别
- PHP中单引号与双引号的区别
- shell中" "(双引号)与 ' '(单引号)的区别
- shell中单引号与双引号的区别
- PHP中单引号与双引号的区别
- PHP中单引号与双引号的区别
- PHP中单引号与双引号的区别
- " "(双引号)与 ' '(单引号)的区别 (转载)
- unity3d引用android第三方sdk
- hdu4340 树形dp
- 移动UI设计中的7种主要导航模式
- pring MVC常用的注解
- HDU 4454 Stealing a Cake(三分暴力枚举)
- 给字符指针赋值, ” “双引号与' '单引号的区别
- TF-IDF及其算法
- 一款简单的右侧客服代码(带二维码扫描图)
- 模拟网络状态不好的情况
- 蒙版和调整图层的使用—用PS调出黑白背景
- 你的程序线程安全吗?
- DB2离线和在线全备、增量备份及恢复的操作步骤
- Oracle EBS并发请求启用跟踪
- 反射