如何解决为什么直接访问时不打印二维数组值
#include<stdio.h>
int main(){
int i,j;
int ans[5][5];
ans[0][0] = 10;
printf(" why this %d \n\n",ans[0,0] );
}
解决方法
你声明了一个二维数组
int ans[5][5];
数组的元素类型为int[5]
。例如,表达式 ans[0]
给出了这样一个数组。表达式中使用的数组(极少数例外)被转换为指向它们的第一个元素的指针。因此,ans[0]
类型的表达式 int[5]
被隐式转换为 int *
类型的指针,指向元素 ans[0][0]
在这个表达式中
ans[0,0]
在方括号中使用了带有逗号运算符 0,0
的表达式。由于带有逗号运算符的表达式的第一个操作数没有副作用,因此上述表达式等效于 ans[0]
。
这意味着在这个调用中
printf(" why this %d \n\n",ans[0,0] );
相当于
printf(" why this %d \n\n",ans[0] );
您正在尝试使用转换说明符 %d
输出指针,该说明符旨在输出导致未定义行为的 int
类型的对象。
你的意思是
printf(" why this %d \n\n",ans[0][0] );
或
printf(" why this %d \n\n",**ans );
或
printf(" why this %d \n\n",*ans[0] );
或
printf(" why this %d \n\n",( *ans )[0] );
至于逗号运算符,请考虑以下代码片段
int i = 0;
ans[0][0] = ( ++i,++i,++i );
其结果相当于下面的代码片段
int i = 10;
ans[0][0] = i;
,
你接近数组错误 试试这个:
int main(){
int i,j;
int ans[5][5];
ans[0][0] = 10;
printf(" why this %d \n\n",ans[0][0] );
return 0;
}
你需要使用“[number][number]”从二维数组中获取数字而不是[number,number]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。