C语言指针数组问题
我想问一下char*a={"abc"};跟chara[]={"abc"};2者有什么区别?区别在哪?...
我想问一下
char *a={"abc"};
跟
char a[]={"abc"};
2者有什么区别?区别在哪? 展开
char *a={"abc"};
跟
char a[]={"abc"};
2者有什么区别?区别在哪? 展开
5个回答
展开全部
执行char *a={"abc"};时,编译器先把"abc"放在内存里一个连续的地址内,然后让a指向它们的首地址,也就是'a'的地址.
而char a[]={"abc"};是先开拓一个a[3]的内存(占4字节,包括'\0'),然后把a,b,c存进去
而char a[]={"abc"};是先开拓一个a[3]的内存(占4字节,包括'\0'),然后把a,b,c存进去
追问
但是char a[]={"abc"}; 单独一个a不是也是等于一个指向a[0]的指针么?
追答
单独一个a也指向a[0],但是这个和*a不一样的,单独a是数组名,它不能改变指向,比如a++;就错了,但是*a是可以的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说几点c语言讲不到的吧。。。
首先 指针a,数组a以及他其中的内容abc,都存放在内存的栈区,然而指针a后面的“abc”都存放在内存的常量区,放在常量区的是不可以修改的。
再其次,a[4]={"abcd"}, 数组名是指向字符首地址的指针,也就是如你所说的,是指向a[0]的。。。
再者,他们说的可修改内容与否,你只需要了解即可,不需要知道为什么,以后会学到的。。
首先 指针a,数组a以及他其中的内容abc,都存放在内存的栈区,然而指针a后面的“abc”都存放在内存的常量区,放在常量区的是不可以修改的。
再其次,a[4]={"abcd"}, 数组名是指向字符首地址的指针,也就是如你所说的,是指向a[0]的。。。
再者,他们说的可修改内容与否,你只需要了解即可,不需要知道为什么,以后会学到的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char *a={"abc"}; a 是指针。
char c[]={"abc"}; c 是数组。
初始化后 sizeof(a) 为 4,strlen(a) 为3。
同样,sizeof(c) 为 4,strlen(c) 为3。
在语句中有时一样,有时不一样。
例如:
char *a={"abc"};
char c[]={"abc"};
char b[]={"123"};
int L;
L = sizeof(a);
printf("a: %d %s\n",L, a);
a=b; // a 允许
L = sizeof(a);
printf("a: %d %s\n",L, a);
L = sizeof(c); // a,c 方法一样
printf("c: %d %s\n",L, c); // a,c 方法一样
// wrong c=b; // c 不允许
strcpy(c,b); // c 只能这样做
L = sizeof(c);
printf("c: %d %s\n",L, c);
注意 a=b; 允许。c=b; 不允许 。 只能 strcpy(c,b);
输出:
a: 4 abc
a: 4 123
c: 4 abc
c: 4 123
char c[]={"abc"}; c 是数组。
初始化后 sizeof(a) 为 4,strlen(a) 为3。
同样,sizeof(c) 为 4,strlen(c) 为3。
在语句中有时一样,有时不一样。
例如:
char *a={"abc"};
char c[]={"abc"};
char b[]={"123"};
int L;
L = sizeof(a);
printf("a: %d %s\n",L, a);
a=b; // a 允许
L = sizeof(a);
printf("a: %d %s\n",L, a);
L = sizeof(c); // a,c 方法一样
printf("c: %d %s\n",L, c); // a,c 方法一样
// wrong c=b; // c 不允许
strcpy(c,b); // c 只能这样做
L = sizeof(c);
printf("c: %d %s\n",L, c);
注意 a=b; 允许。c=b; 不允许 。 只能 strcpy(c,b);
输出:
a: 4 abc
a: 4 123
c: 4 abc
c: 4 123
追问
char c[]={"abc"}; 单独一个c是指向c[0]的指针么?
追答
是的。单独一个c是 &c[0]。不能做“左值”。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个是指针
第二个是数组
第二个是数组
追问
第一个是指针 但是第二个也是指针吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询