为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
你想象不到我有多执着 2016-12-08 19:53:43
/***************************************************************************************** 我自己做了一个测试,但是还是有几点不懂的地方,代码在下方 测试结果: 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,有时候会是空白 为什么会出现乱码 ********************************/ 
查看完整描述

2 回答

已采纳
?
克洛

TA贡献6条经验 获得超2个赞

  1. 由于你在printf里面给的格式是%s,意思是以字符串输出,你给该字符串的首地址,所以输出的是hello world,如果想输出s的地址把%s改成%d就可以了,%d的意思是以整型输出

  2. 你指定了要用字符串的方式输出,但是后面给的不是一个地址,所以出错了,如果你想要显示第一个字符,用%c指定输出格式是字符,就是把代码里的%s换成%c就可以了

  3. 4.你那个ss赋值的时候是直接用字符串赋值,但是你的数组长度是5,所以最后没办法自动添上/0作为结束符,printf输出字符串的需要遇到/0才能结束,你的字符串后面没有/0,所以会一直输出直到遇到/0,这是后面乱码的原因.可以把ss每行定义为6个元素,大小够用了,后面就不会出现乱码了

查看完整回答
1 反对 回复 2016-12-08
?
慕瓜9220888

TA贡献868条经验 获得超0个赞

KVASLEHSC

HTEYNUDNT

CQIRTCPSS

JKWYGZMUH

LEGVXAGJS

AIAFEBUUX

OVEJIRRZG

OCGIKATWZ

ZXIBMGJSZ

ALDLALYRB

CZFNZFVSS

ARGRQDMSP

ZSEEGXUUL

BXTMVMCZQ

MERTWMJDH

UIBEYPVMN

XUQLJKBVP

GIHTISIMG

QIUQTKKLV

ALEKDHHYP

QYANFMDKE

GYUDCTAXX

YKBJGAGXE

TRGFOFVMT

TUGGSJZQH

BPYUNDEBS

UVEXZQRRR

SDMPKRHYI

XZRRTYPFQ

SKNMYPCTF

PQTCBBYFP

ZRAZSSBYI

ALOQDHPQN

DYNSAAXCL

CWVACYRHY

VZIHCCFYB

FLOQZGXAB

CGKMOEQQT

IALRJCFAW

CUPRDCVLB

SCUTPLMZC

KENVNHKWM

ASAFBBOOK

TPKJRWMJS

YDLDCFSLE

CEACKEKAD

KVDZHKTLO

DRXGFJQXH

EWVNFSYLL

DZHMBYOKU

KBKFUNAGU

IBCBDGGPW

BYKJOEAUT

CDSDCLFYH

DVHATJKHX

HJSLTKLRL

HPEFEVIZF

SVXQCNNMQ

XPSEHXEFF

QACOHOVCM

ENWPILIFG

ECHQWGFMC

LTCNMTQGX

DEKDMTKXG

ZENDFSPGA

AWOBDKXHI

TNVOHHELV

UWVKDUCTQ

NPIKGHEUX

LIRAVMMDX

RZRKTAABL

MKQZBCZZD

OONZCTTAK

BTVKXEKHS

VDCBKROOZ

WLENVWGHB

GEZIKTMWW

MBZITYOLU

TNSEMURHK

YXFONUBCY

BVOMYHXQA

SDLECPCIV

ZKIKPSFYI

KRWVHXADL

NBXIHJMIS

JGCKDUXQN

OFGOAZTFV

RBKMUEXKD

WWSXMVSYY

ZTLADGCSI

PQYHSSLYI

BJVEXEUVF

CXWFOLSPZ

XWVNDNKOS

PQYDPFIVL

JFKVXNQJJ

EYKIKHTDZ

JEPHQWHKH

NIRRJZZWF

NGVXZMWIS

NOGIXANJP

ZKSNUOQAT

RLHCKENXT

KONFAADNA

XLQZBCVFO

ELACNTAYE

TKJYNQTUU

RMUJBCCVI

HYNFRRGCS

DBTBLLUBR

XKYUZSFVY

SNLASVORY

BINXZQHHO

DJBEXXEEV

WRATFGTNU

SRTCVFPGG

OXPIRIFYY

ETLONULSV

TYNMNNBSI

PNGSOHNKL

USDMONUBU

VRTSAXXTN

GRCLAWMPM

MNINCPYXN

IJGYKTGGW

IMEXFSIEG

JUWOWGMCY

SNWYRBISM

UNGUJGTUM

CEWOQQGWP

KBJFKXAZM

HFYADNAKU

VTPQIJZAU

MKTPOPMWM

RJCVXBYLS

SDGYBYBKR

MQTJFCSTT

SADPMJARR

CHACFWMJA

MEQTCRYIP

WKNGISDNK

NYXNGMTAK

XWIKXNURD

LTXUMTUKB

XZBEDQRBR

FNHEWGEEO

YZSVHBOFF

EJFYAXOLV

MUWSBIFZT

NNKSVSFMM

XVHQZJZJN

MKCCOVMTE

GYQWFTAQE

JRKWJJJAE

MXQMZCTTK

OIQSUODAK

KOHQSJQXX

CAVECPCKX

ESODLYUKX

UPDJUADLY

XRZLJTGCM

QOJIQTCZZ

VJFMYUNNK

GPRTIBYUE

YTBDSTGMJ

RBAIHKKDG

SJBKVFLZJ

DNCGSSUEK

ZHJRDJMPP

RDFIABIYJ

KVRUWNAAB

FZRATELRC

BZKCFMMDX

AATMOPTAK

LGIBUUNTE

MEQCVMJFF

APIBNQXZQ

TVYQJJIJJ

NRRTWDQXX

OWYBKUBHS

查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 1 关注
  • 4008 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信