浅谈char* 与char[]的区别
来源:互联网 发布:淘宝宝贝没有展现词 编辑:程序博客网 时间:2024/05/20 01:39
很多C++程序员都会被char*与char[]所困惑,从表面上看char*是一个指向char的指针,char[]是一个char类型数组,而且它们都可以这样赋值:
char* a="12345";
char[10] b="12345";
但实际上给a b分配的内存是完全不一样的,给a分配的内存是处于静态存储区的,而给b分配的内存是处于栈上的,我们知道静态存储区存储的都是常量,是不能被更改的。而栈存储的是变量,是可以被更改的。因此,
a[0]='2'; //error
b[0]='2';//OK
所以在用char*的时候要特别注意,是否它是用第一种方式定义的。
这就是两者最本质的区别,而在本人看来,为何把a的内存分配在静态存储区的原因是无法为a计算大小,而这也是为什么
sizeof(a)==1 而 sizeof(b)==10的原因。
- 浅谈char* 与char[]的区别
- 浅谈char *str与char str[]的区别
- char[] 与 char* 的区别
- char[] 与 char* 的区别
- char * 与 char[]的区别
- char *与char []的区别
- char *与 &char的区别
- char*与char[]的区别
- char[]与char*的区别
- char * 与char[]的区别
- char *与char[]的区别
- char[] 与char*的区别
- char[] 与char*的区别
- char * 与char []的区别
- *(char**) 与 (char*) 的区别
- char * 与 char[] 的区别
- char* 与 char[] 的区别
- const char *|char const char * 与char * const 的区别
- Linux编译器GCC的使用
- Using JavaFX UI Controls(Label的用法)
- 干嘛呢:给自己找个伴吧
- 下载功能
- Bloomberg 05112012
- 浅谈char* 与char[]的区别
- Ubuntu无法上网问题解决
- 连接 Access 大全
- 简化的打印语句-静态导入
- 目标跟踪
- 制作1px表格边框的十种方法(html和css)
- 生成验证码
- 有关unique算法
- static的全部用法