C语言数组去掉了数组名后面的中括号是什么意思

/*****************************************************************************************
我自己做了一个测试,但是还是有几点不懂的地方,代码在下方

测试结果:
1、int型数组如果去掉了中括号就是第一个元素的地址
2、char型数组如果去掉了后面的中括号就能够正常格式化输出
hello world,如果单独输出第一个元素的话,就会自动结束运行

问:
1、如果数组去掉了后面的中括号的话就是第一个元素的地址的话,
那①处(下面代码标注)为什么不是输出第一个元素的地址而是输
出hello world
2、如果我想要显示第一个字符,方法如第②处那样,点击运行之后,
跳出来的窗口就会自动停止工作,为什么不是显示第一个字符而
是停止工作
3、如果char型要去掉一个中括号的话,那么第③处的代码1处应该
是显示hello,代码2处应该是显示world,但是输出结果却不是我
想的那样(代码最后有输出结果),为什么此处的输出不是我想的那样
4、问题写在文章最末的说明里
*****************************************************************************************/

#include "stdio.h"
void main()
{
    int a[]={1,2,3,4,5,6,7,8,9};
    char s[]="hello world";
    char ss[][5]={"hello","world"};
    //输出a
    printf("%d\n",a);
    //输出a的地址
    printf("%d\n",&a);
    //输出a的第一个元素的地址
    printf("%d\n",&a[0]);
    //①格式化输出字符
    printf("%s\n",s);
    //②错误代码
    //printf("%s\n",s[0]);                    //程序停止工作,但代码编译未报错
    //③验证猜想
    //代码1
    printf("%s\n",ss[0]);
    //代码2
    printf("%s",ss[1]);
}
/*********输出结果*****************
1703708
1703708
1703708
hello world
helloworldm
worldm
*********************************/
/**************说明***************
输出结果最后两行最后的m是随机乱码,有
时候会是y,有时候会是x,有时候会是空白
为什么会出现乱码
********************************/

 

你想象不到我有多执着
浏览 4009回答 2
2回答

克洛

由于你在printf里面给的格式是%s,意思是以字符串输出,你给该字符串的首地址,所以输出的是hello world,如果想输出s的地址把%s改成%d就可以了,%d的意思是以整型输出你指定了要用字符串的方式输出,但是后面给的不是一个地址,所以出错了,如果你想要显示第一个字符,用%c指定输出格式是字符,就是把代码里的%s换成%c就可以了4.你那个ss赋值的时候是直接用字符串赋值,但是你的数组长度是5,所以最后没办法自动添上/0作为结束符,printf输出字符串的需要遇到/0才能结束,你的字符串后面没有/0,所以会一直输出直到遇到/0,这是后面乱码的原因.可以把ss每行定义为6个元素,大小够用了,后面就不会出现乱码了

慕瓜9220888

KVASLEHSCHTEYNUDNTCQIRTCPSSJKWYGZMUHLEGVXAGJSAIAFEBUUXOVEJIRRZGOCGIKATWZZXIBMGJSZALDLALYRBCZFNZFVSSARGRQDMSPZSEEGXUULBXTMVMCZQMERTWMJDHUIBEYPVMNXUQLJKBVPGIHTISIMGQIUQTKKLVALEKDHHYPQYANFMDKEGYUDCTAXXYKBJGAGXETRGFOFVMTTUGGSJZQHBPYUNDEBSUVEXZQRRRSDMPKRHYIXZRRTYPFQSKNMYPCTFPQTCBBYFPZRAZSSBYIALOQDHPQNDYNSAAXCLCWVACYRHYVZIHCCFYBFLOQZGXABCGKMOEQQTIALRJCFAWCUPRDCVLBSCUTPLMZCKENVNHKWMASAFBBOOKTPKJRWMJSYDLDCFSLECEACKEKADKVDZHKTLODRXGFJQXHEWVNFSYLLDZHMBYOKUKBKFUNAGUIBCBDGGPWBYKJOEAUTCDSDCLFYHDVHATJKHXHJSLTKLRLHPEFEVIZFSVXQCNNMQXPSEHXEFFQACOHOVCMENWPILIFGECHQWGFMCLTCNMTQGXDEKDMTKXGZENDFSPGAAWOBDKXHITNVOHHELVUWVKDUCTQNPIKGHEUXLIRAVMMDXRZRKTAABLMKQZBCZZDOONZCTTAKBTVKXEKHSVDCBKROOZWLENVWGHBGEZIKTMWWMBZITYOLUTNSEMURHKYXFONUBCYBVOMYHXQASDLECPCIVZKIKPSFYIKRWVHXADLNBXIHJMISJGCKDUXQNOFGOAZTFVRBKMUEXKDWWSXMVSYYZTLADGCSIPQYHSSLYIBJVEXEUVFCXWFOLSPZXWVNDNKOSPQYDPFIVLJFKVXNQJJEYKIKHTDZJEPHQWHKHNIRRJZZWFNGVXZMWISNOGIXANJPZKSNUOQATRLHCKENXTKONFAADNAXLQZBCVFOELACNTAYETKJYNQTUURMUJBCCVIHYNFRRGCSDBTBLLUBRXKYUZSFVYSNLASVORYBINXZQHHODJBEXXEEVWRATFGTNUSRTCVFPGGOXPIRIFYYETLONULSVTYNMNNBSIPNGSOHNKLUSDMONUBUVRTSAXXTNGRCLAWMPMMNINCPYXNIJGYKTGGWIMEXFSIEGJUWOWGMCYSNWYRBISMUNGUJGTUMCEWOQQGWPKBJFKXAZMHFYADNAKUVTPQIJZAUMKTPOPMWMRJCVXBYLSSDGYBYBKRMQTJFCSTTSADPMJARRCHACFWMJAMEQTCRYIPWKNGISDNKNYXNGMTAKXWIKXNURDLTXUMTUKBXZBEDQRBRFNHEWGEEOYZSVHBOFFEJFYAXOLVMUWSBIFZTNNKSVSFMMXVHQZJZJNMKCCOVMTEGYQWFTAQEJRKWJJJAEMXQMZCTTKOIQSUODAKKOHQSJQXXCAVECPCKXESODLYUKXUPDJUADLYXRZLJTGCMQOJIQTCZZVJFMYUNNKGPRTIBYUEYTBDSTGMJRBAIHKKDGSJBKVFLZJDNCGSSUEKZHJRDJMPPRDFIABIYJKVRUWNAABFZRATELRCBZKCFMMDXAATMOPTAKLGIBUUNTEMEQCVMJFFAPIBNQXZQTVYQJJIJJNRRTWDQXXOWYBKUBHS
打开App,查看更多内容
随时随地看视频慕课网APP