c++里面, char a[100] =''hello'';和char *p = ''hello'';的区别是什么。

希望能具体一点儿讲一下区别,比如两个变量在内存中存入的位置的不同,或是其他什么不同。
最新回答
敲击岁月

2024-06-01 16:44:02

二者在内存中的位置肯定是不同的,前者是字符型数组,是将字符串放到了这个数组中,分配在内存的栈区域,而后者则是将字符型指针指向此字符串,是将字符串的首地址赋给了指针p,但是字符串是在内存的程序区,这是二者的区别,从访问机制上来说,数组用下标运算符“[ ]”进行值访问,例如a[0]值为h,a[1]值为e;指针则是需要用反向引用运算符进行值访问“*”例如:*p值为h *(p+1)值为e。
剩余旳滚!

2024-06-01 14:40:18

位置不同
char a[100] 在栈上分配了数组的空间,可读,可写
char *p = "hello", 字符串的空间在常量区分配,只读
严谨的写法应该是:
const char *p = "hello";
C/C++为了兼容历史代码,才允许写成char *p = "hello";
但一旦试图写入这个空间,操作系统(DOS不算啊)会捕捉这个错误的
﹏澈

2024-06-01 11:25:29

区别之一:
a[100] =''hello''; 分配100个字节内存,而char *p = ''hello'' 只分配6个字节内存

区别之二:
前者所存的内容可以改变(例如a[3]='A'; OK),而后者则不可以(例如p[3]='A'; Error)。
一花一树开

2024-06-01 11:31:26

char a[100]表示字符串一维数据组。他表示把字符串“hello”存储到char a[100]里面。后面的char *p表示先找到存储字符串“hello”的地址,然后从里面把字符串取出来。正如1L所说,访问方式不同
何必纠缠

2024-06-01 01:31:32

访问方式不同:a[i],*(p+i)