数组和指针在堆栈中的区别,详见下图
发布网友
发布时间:2022-04-27 08:09
我来回答
共2个回答
热心网友
时间:2022-06-28 22:14
s1是数组,在栈区,它有自己的空间来保存字符,所以保存的字符也在栈区
s2是个指针,在栈区,它保存的是另外一块内存的起始地址值,在这个例子中,s2保存的就是在常量区的字面字符串"bbbbb"的起始地址
char s1[]="aaaaa"; //这仅仅是初始化数组s1的一种方式,并没有存在字面字符串"aaaaa",这就是char s1[]={'a','a','a','a','a','\0'};的另外一种写法
char* s2="bbbbb"; //这个是真正在常量区产生了字面字符串"bbbbb",并且使s2指针指向它
热心网友
时间:2022-06-28 22:15
是这样的逻辑:首先“aaaaa”是在常量区,char s1[] = "aaaaa"运行之后之后会把常量区拷贝到栈区,char *s2 = "bbbb";这是定义一个指针,就是让指针指向常量区,所以编译的时候确定。