C语言,char a[]="abc"。
发布网友
发布时间:2024-09-29 06:38
我来回答
共3个回答
热心网友
时间:2024-12-01 14:20
1. 会,系统在初始化时就为字符串"abc“分配了内存
2. 这个”abc"的地址就是数组a的首地址
热心网友
时间:2024-12-01 14:20
char a[]="abc"
等价于
char a[4]="abc"。
还有个自动加上的字符串结束符。
这是数组初始化自然会分配内存,因为在初始化时使用了""引号,所以会自动加上\0。
一个char是8个位,也就是一个字节,所以须要在栈上开辟四个字符的大小空间。
有一种情况例外
char *const p = "abc";
该 字符串被分配到字符常量区。返回一个指针交给p。并不会开新的栈上空间。
只所以要加const是因为他指向的是静态常量不能修改。当然你可以改这个p指向的地址追问1.const 有什么意义呢?
2.p指向的地址??还是字符常量?
3.加const是否*p不能赋值?所以内存单元可能不允许赋值?
4.有哪些内存单元是可以赋值的?
热心网友
时间:2024-12-01 14:21
像这样的问题最好自己测试一下,下面是c、c++测试,, 如果自己不动手,学不到东西的
#include<stdio.h>
#include<iostream>
using namespace std;
char ss[]="abc";
int main()
{
printf("%d\n",&ss[0]);
cout<<ss<<endl;
cin>>ss;
}
结果 4313088 abc