完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
数组下标越界访问却不报错,正常运行??
//初始化定义程序: void main(void) { unsigned char code[4]=0; unsigned char code_1[4]=0; //两句等于unsigned char buf[8]=0; } //程序调用端 code[0]=num%10; code[1]=num/10%10; code[2]=num/100%10; code[3]=num/1000%10; code[4]=fre%10; code[5]=fre/10%10; code[6]=fre/100%10; code[7]=fre/1000%10;
原因分析:
二维数组 int main () { int a[3][4] = {{1,2}, {0}, {4, 6, 8, 10}}; printf("输出结果为:%dn", a[1][2]); printf("输出结果为:%dn", a[1][0]); printf("输出结果为:%dn", a[1][1]); printf("输出结果为:%dn", a[1][3]); printf("输出结果为:%dn", a[0][3]); printf("输出结果为:%dn", a[0][2]); return 0; } 输出结果都为0 多维数组 int main () { int a[3][4][3] = {{{1,2}}, {{1}}, {4, 6, 8}}; printf("输出结果为:%dn", a[1][0][0]); printf("输出结果为:%dn", a[5]); return 0; } #include int main () { int a3d[2][2][3] = { { { 1, 0, 0 }, { 4, 0, 0 } }, { { 7, 8, 0 }, { 1, 2, 3 } } }; int (*p)[2][3] = a3d; printf("输出结果为:%dn",*(*(*(p+1)+1)+1) ); return 0; } 输出结果为:2 *(p+1) 代表当前a[0][0][0]加到a[1][0][0] * 单个++访问也可 int a[2][2][3] = {1,2,3,4}; int *p = &(a[0][0][0]); // /* for(int i = 0; i < 2*2*3; i++) *(p+i) = i; */ printf("a[][][]的值为:%dn", *(p+(0*3 + 0*3 + 1))); printf("===============n"); for(int i = 0; i < 2*2*3; i++) printf("a[][][]的值为:%dn", *(p+i)); //编译提示warning,错误写法 int a[2][2][3] = {1,2,3,4}; int *p = a; printf("a[][][]的值为:%dn", *(p+(0*3 + 0*3 + 1))); printf("===============n"); for(int i = 0; i < 2*2*3; i++) printf("a[][][]的值为:%dn", *(p+i)); |
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
2998 浏览 16 评论
3496 浏览 1 评论
9066 浏览 16 评论
4089 浏览 18 评论
1186浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
602浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2339浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 12:03 , Processed in 1.213285 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号