关于字符型数组和字符型指针
来源:互联网 发布:unity3d发布到网页 编辑:程序博客网 时间:2024/06/06 03:47
在看有小菜提问的时候看见大牛回答一个精辟的答案。。。
问题如下:char a[]与char *a 的区别
代码:二者本质上有什么区别?
char *get()
{
char *a="test string";
return a;
}
这个没有问题,
char *get()
{
char a[]="test string";
return a;
}
这个却有问题。
高手解释下!
大牛回答如下:char *a 定义的是字符指针, 它的值是可以改变的,
char *a="test string"; 会将字符串常量的地址直接赋值给a, 所以这个a的值可以返回给调用者
char a[] 定义的是字符数组, 它是指分配的一段内存空间的位置, 一旦分配就不要改变,
char a[]="test string"; 则是分配一块内存空间, 将字符串常量复制过来,
因为这段代码在函数中, 所以它是在栈上分配的空间, 一旦函数调用结束, 返回的这个值成为一个野指针, 导致错误出现
最后简单总结一下:
char *a="test string"; 只需要传入地址, 不另外分配内存空间,
char a[]="test string"; 则需要分配内存空间, 再复制字符串
个人总结:
一. 关于变量的内存分配问题:
1. 建立的全局变量占有数据段的内存
2.建立的局部变量分配在栈中
3.使用动态内存分配语句new建立的动态变量,内存在堆中分配
- 关于字符型数组和字符型指针
- 字符数组和 字符型指针
- 关于字符串 字符数组 字符型指针的问题
- 关于sizeof和字符指针和数组。
- 字符指针和字符数组
- 字符指针和字符数组
- 字符指针和字符数组
- 字符数组和字符指针
- 字符指针和字符数组
- 字符数组和字符指针.....
- 字符数组和字符指针、
- 字符数组和字符指针
- 字符数组和字符指针
- 字符数组和字符指针
- 字符指针和字符数组
- 字符指针和字符数组
- 字符数组和字符指针
- 字符数组和字符指针
- 永恒之塔 剑星宏
- 多线程操作CListCtrl之死锁问题
- 开博
- 关于expression
- ArrayList和LinkedList的区别是什么?举例说明LinkedList可实现的功能
- 关于字符型数组和字符型指针
- C++中标准输入输出的格式控制 (十六进制输入输出,输出数据对齐)
- IT人的好习惯和不良习惯总结
- 我常用的CeDebugX.dll的命令
- 缺角的1块钱
- IT培训行业潜规则大揭秘
- ubuntu下安装java以及tomacat
- 在emp中如何实现文件上传
- 如何在系统启动时处理非平台的初始化操作