int main() {
int my array[3][3] =
10, 23, 42,
1, 654, 0,
40652, 22, 0
};
printf("%d\n", my_array[3][3]);
return 0;
}
我无法将数组打印出来..任何想法为什么?我是一名初学者,所以任何建议的话都会受到赞赏。
答案 0 :(得分:25)
你正在做的是在spot [3] [3]中打印数组中的值,这对于3by3数组是无效的,你需要遍历所有的点并打印它们。
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
这将按以下格式打印
10 23 42
1 654 0
40652 22 0
如果您想要更精确的格式化,则必须更改printf的格式化方式。
答案 1 :(得分:11)
C中没有.length属性.length属性只能应用于面向对象编程(OOP)语言中的数组。 .length属性继承自对象类;所有其他课程和班级对象继承自OOP语言。另外,可以使用.length-1来返回数组中最后一个索引的数量;仅使用.length将返回数组的总长度。
我会建议这样的事情:
int index;
int jdex;
for( index = 0; index < (sizeof( my_array ) / sizeof( my_array[0] )); index++){
for( jdex = 0; jdex < (sizeof( my_array ) / sizeof( my_array[0] )); jdex++){
printf( "%d", my_array[index][jdex] );
printf( "\n" );
}
}
行(sizeof(my_array)/ sizeof(my_array [0]))将为您提供相关数组的大小。 sizeof属性将以字节为单位返回长度,因此必须将每个元素组成的字节数除以数组的总大小,每个元素占用4个字节,因为每个元素的类型分别为int。该数组的总大小为16个字节,每个元素为4个字节,因此16/4产生4个数组中元素的总数,因为索引从0开始而不是1。
答案 2 :(得分:3)
看起来您的阵列上有拼写错误,应该是:
int my_array[3][3] = {...
您没有_
或{
。
my_array[3][3]
也是无效的位置。由于计算机从0
开始计算,您正在访问位置4
。 (阵列很奇怪)。
如果您只想要最后一个元素:
printf("%d\n", my_array[2][2]);
如果你想要整个阵列:
for(int i = 0; i < my_array.length; i++) {
for(int j = 0; j < my_array[i].length; j++)
printf("%d ", my_array[i][j]);
printf("\n");
}
答案 3 :(得分:1)
你可以试试这个:
#include <stdio.h>
int main()
{
int i,j;
int my_array[3][3] ={10, 23, 42, 1, 654, 0, 40652, 22, 0};
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
printf("%d ", my_array[i][j]);
}
printf("\n");
}
return 0;
}
答案 4 :(得分:0)
如果要像在Python中打印2D列表一样打印数组:
#include <stdio.h>
int main()
{
int i, j;
int my_array[3][3] = {{10, 23, 42}, {1, 654, 0}, {40652, 22, 0}};
for(i = 0; i < 3; i++)
{
if (i == 0) {
printf("[");
}
printf("[");
for(j = 0; j < 3; j++)
{
printf("%d", my_array[i][j]);
if (j < 2) {
printf(", ");
}
}
printf("]");
if (i == 2) {
printf("]");
}
if (i < 2) {
printf(", ");
}
}
return 0;
}
输出将是:
[[10, 23, 42], [1, 654, 0], [40652, 22, 0]]