关于指针char *p和数组char p[] 的区别
来源:互联网 发布:网络捕鱼游戏排行榜 编辑:程序博客网 时间:2024/04/30 14:36
常见到这种指针赋值的错误,今天略微总结:
精简后的例子:
int main()
{
char* str = "123456789";
*str= 'a';
printf("%s\n", str);
return 0;
}
编译不报错,运行报segmentation fault分析如下:
char *p = “hello”;
和:
char p[ ] = “hello”;
第一个把一个常量字符串存入只读数据段,并用p指针指向其首位。后续程序可以通过该指针读取字符串内
容,但不能改写。
第二个把字符串复制到栈空间里,并将此位置命名为 char p[]。后续程序可以通过字符数组p读取、更改该
字符串,但不能改写p自身。
改为int main()
{
char str[] = "123456789";
*str= 'a';
printf("%s\n", str);
return 0;
}
即可
另外,下面这个例子也值得借鉴:
#include <stdio.h>
int main()
{
char str[]= "123456789";
str = "aaa";
printf("%s\n", str);
return 0;
}
这样编译不通过,char str[]改为char *str即可
- 关于指针char *p和数组char p[] 的区别
- 指向字符数组的指针 char*p="abc"和char p[]="abc"的区别。
- char *p和 char p[]的区别
- char *p和 char p[]的区别?
- char* p 和 char p[] 的区别
- C语言学习零碎整理(5):关于char指针p和char s[]的区别
- C语言学习零碎整理(5):关于char指针p和char s[]的区别
- 关于char *p和char p[]
- 关于char p[]的数组名不是指针
- 关于char (*p)[] 和char p[]的问题
- 关于char (*p)[] 和char p[]的问题(转)
- 关于char (*p)[] 和char p[]的问题
- char *p 与 char p[]的区别
- 关于const char *p 、char const*p 、char *const p 的区别
- char *p[5] 和 char p[5][10] 和 char **p的区别
- char *p和char p[]的问题
- 关于:char (*p)[10] 、char p[10]和char *p[10]的讨论
- 关于:char (*p)[10] 、char p[10]和char *p[10]的讨论
- 预处理 超全局变量 设计开发流程
- c操作ldap
- (树形DP) Strategic game(P1463)
- dede文章推荐后列表页显示文字加粗的修改方法
- Yslow的使用方法(web性能优化)
- 关于指针char *p和数组char p[] 的区别
- IT求职经验总结——面试和准备策略
- 第十二周任务3:四个数的最大公约数
- xcode 真机调试
- 全面阐释Spring及其各项功能
- ( samsung and moto ) open source url
- 十八年开发经历小结
- CString和char的内存
- 十八年开发经验分享(一)学习篇