C语言字符指针和字符数组的区别
2015-06-12 22:08
246 查看
废话不多说,直接上代码:
运行结果:
如上所示,字符数组str的地址是在高地址的栈当中,而字符指针str1则在低地址的代码段当中,而C不允许程序直接操作代码段,所以下面这段代码会出现段错误:
解决方法:必须为str1分配内存空间(malloc)。
#include<stdio.h> int main() { char str[]="hello78"; char *str1="world"; printf("%p\n",str); printf("%p\n",str1); printf("%s\n",str); printf("%s\n",str1); return 0; }
运行结果:
0x7fffd5b961b0 0x400704 hello78 world
如上所示,字符数组str的地址是在高地址的栈当中,而字符指针str1则在低地址的代码段当中,而C不允许程序直接操作代码段,所以下面这段代码会出现段错误:
#include<stdio.h> int main() { char str[]="hello78"; char *str1="world"; scanf("%s",str1); printf("%p\n",str); printf("%p\n",str1); printf("%s\n",str); printf("%s\n",str1); return 0; }程序无法修改str1,所以出现段错误。
解决方法:必须为str1分配内存空间(malloc)。
相关文章推荐
- VC++动态链接库编程
- C++ 纯虚方法
- 转 值得推荐的C/C++框架和库
- 单链表的逆置-C++实现
- chapter12test4
- C++ Primer学习2:细节:引用
- leetcode系列题目——Set Matrix Zeroes
- C++二叉树翻转
- c++中的4种类型转换
- zerglurker的C语言教程008——循环语句详解
- C++中的explicit
- 【学习笔记】【C语言】循环结构-do while
- 用C++解决:把数组排成最小的数问题
- c++ 简单对象的内存分配过程
- c++栈和队列
- C/C++自学路径
- 实验第三方的内存泄露检测工具VLD(Visual Leak Detector)
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- 实验内存泄露的检测
- c++中虚函数和多态性