永发信息网

char *a = {"hello"}; 跟char *a = "hello"的区别

答案:7  悬赏:10  手机版
解决时间 2021-04-29 02:15
char *a = {"hello"}; 跟char *a = "hello"的区别
最佳答案
没什么区别,是一样的意思,只不过是初始化的写法略有不同而已。加与不加大括号对于此时没什么影响,a都是指向"hello"的指针。
如同 int n={2}; 和 int n=2;一样。

全部回答
char *a = {"hello"};    //字符数组
char *a = "hello";    //字符串
其实二者也没什么太大区别的。都可以当作数组来使用。如 a[1]
第一个定义的是一个数组,第二个定义的是一个字符串。
这个要分两部分看,第一个部分等号前的部分char *a,这个的意思就是定义了一个指针。
后面的部分{"hello"},就是定义了一个数组,而"hello"则是一个字符串。
我们平时定义char a[] 这里的数组名其实也是一个指针。
结合起来看{"hello"},a是一个指针,指向的是数组的第一个元素的地址,即是“hello”这个元素的地址。
从语法意义上讲,二者不太一样。但从使用角度来讲,就这个具体表达式,效果是一样的。
二者都是先生成一个常字符串,然后把其首地址(就是字母h的地址)赋给指针p。前者的{}在这里只有“板块”的意思了,所以与没有一样;后者你清楚。二者定义的字符串都是“常字符串”,不能修改。这没有“为什么”,就是这么规定的;想让其可变,就不要定义常量,用char a[]="hello";即可。char a[]="hello"的意思是声明一个数组a,并用一个字符串的“hello"的各位给a的各位对应赋值,并在最后加一位'\0'。
char *str0 = "1234"; //strlen(str0) = 4,sizeof(str0) = 4
char *str1 = "1234\0"; //strlen(str1) = 4,sizeof(str1) = 4
char str2[] = "1234"; //strlen(str2) = 4,sizeof(str2) = 5
以上是在VC++ 6.0环境下的测试结果,这里体现了strlen()和sizeof的区别。
严格地的活,str0和str1是指针,str2是数组,这是其定义方式决定的。
二者的共同点是:
1、都不能改变变量的指向,即str0、str1和str2都不能作为左值(=左边的变量);
2、作为函数参数都会被当作指针看待;
不同点是:
1、在用关键字sizeof计算长度时,数组长度会比字符串长度大1。
2、作为外部变量,char s[]在另一个(或多个)磁盘文件中,不能用char *s来指向s[],反之亦然。
你这个两个都是字符串。字符串数组char* a[]={"hello","world",NULL}; 这种读法大概可以这样认为,a先和[]构成一个数组,然后数组存放的内容是char*,也就是字符串,联合起来就构成了字符串数组。
char* a={"hello"}为什么不能修改,这个要涉及进程占用的内存分段,大概分为代码区,只读区,全局区,堆区,栈区。"hello"作为一个字符串字面值,是被放在只读区,只读顾名思义就是不能修改的。char* a="hello",相当于把hello的地址赋给了a,故而不能对a指向的内容进行修改。char a[]="hello",这样赋值的就是一个字符数组。字符数组a是在栈区里申请的一个空间给a,然后把只读区的"hello"进行了一次复制再赋值给a,这样a的指向是能修改的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大卫的头发怎么刻画?用一开的素描纸画大卫是
现在什么职业比较吃香啊!
歌美HD8800和驰为P7哪个好
你认为是双眼皮女生更有魅力还是单眼皮女生更
如何才能更快更安全的升QQ等级?
德泰家园(运河路)在哪里啊,我有事要去这个地
这是怎么回事啊?怎么样才能备份系统?
登录摩天大楼为什么只显示一半?
法律民事案件上诉为几个月会判?
初一二元一次方程解某建筑公司急用普通水泥23
北蔡附近宾馆,旅馆 大概多少钱来着
跪求绯闻女孩1-6季百度云,最好是中英字幕,
惨了,我的闪电十一人2存档大问题!!!!
沙河口工商分局红盾维权进社区联系点地址有知
广州汽车驾照考完要等多久才可以拿到??
推荐资讯
想念一个人的时候为什么会这么的难受?
联想I300怎么使用驱动
什么High曲好听
谁的丝路英雄联盟能加我?
林俊杰拍过广告没?
如图,AB=CD,AC与BD 相交于点D,且AC=DB。求
苹果醋一斤发多少醋和发酵方法
塞尔号鉴定精灵小波,布布
怎么让自己精神提高、连续几天不睡
45894-455+48524-663等于几?
手机上在短信那有一个小区广播干吗用的?
请帮忙,这是什么歌?谢谢!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?