首页 > 试题广场 >

有下面一段代码,则对执行以上代码后,会出现什么问题?

[单选题]
有下面一段代码:
char szMsisdn[MAX_LEN_MSISDN-1]; 
szMsisdn[sizeof(szMsisdn)]='\0'; 
则对执行以上代码后,会出现什么问题?
  • 没有问题
  • 数组越界
  • 赋值错误
  • 忘记加地址运算符&
选B
charszMsisdn[MAX_LEN_MSISDN-1];//建立一个长度为MAX_LEN_MSISDN-1的数组,下标范围应为0~MAX_LEN_MSISDN-2
szMsisdn[sizeof(szMsidn)]=’\0’;//sizeof(szMsidn)得到的是数组长度,为MAX_LEN_MSISDN-1,那么szMsisdn[sizeof(szMsidn)]= szMsisdn[MAX_LEN_MSISDN-1],很明显数组越界了
发表于 2015-08-12 11:50:25 回复(3)
sizeof是数组的大小,n 下标范围是0---n-1
发表于 2019-12-18 16:43:02 回复(0)
明显题错了,sizeof(szMsidn)里的数组名少了一个s,我也是醉了。。。。。。。。。。。。
发表于 2018-08-02 21:45:57 回复(2)
数组长度为sizeof()-1
发表于 2017-09-06 10:55:00 回复(0)
32位系统下sizeof(szMsidn)得到的不是4*( MAX_LEN_MSISDN-1)吗?
发表于 2017-06-29 22:39:58 回复(2)
ln2头像 ln2
 szMsisdn[sizeof(szMsidn)]=szMsisdn[MAX_LEN_MSISDN-1],而szMsisdn的最大小标为MAX_LEN_MSISDN-2,即 szMsisdn[ MAX_LEN_MSISDN-2 ]
发表于 2015-04-11 10:38:15 回复(0)
sizeof是数组的大小,n下标范围是0-n-1
发表于 2022-02-05 14:06:47 回复(0)
总的来说,[ ] 里面的是数组的最大元素,sizeof访问的时候访问的就是最大元素,但是,问题出在数组的元素个数并不是他的最大元素,而是元素个数减一,所以越界了
发表于 2023-06-06 13:55:11 回复(0)
就比如说你开辟了5个数据的空间,但是在赋值的时候,下标索引是0,1,2,3,4不能索引到5,所以在这里的话,就会导致缓冲区溢出
发表于 2023-05-04 16:25:57 回复(0)
数组越界了,怎么可以给MAX_LEN数字的数组小标赋值呢,数组下标可是从零开始的
发表于 2018-03-16 15:32:03 回复(0)
程序执行后有问题,szMsisdn[MAX_LEN_MSISDN-1]赋值是越界行为。
发表于 2014-11-15 13:36:46 回复(0)