如何打印阵列?

Sha*_*mar 34 c printing arrays multidimensional-array

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;
}
Run Code Online (Sandbox Code Playgroud)

我无法打印阵列..任何想法为什么?我是一名初学者,所以任何建议的话都会受到赞赏.

twa*_*249 29

你正在做的是在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");
} 
Run Code Online (Sandbox Code Playgroud)

这将按以下格式打印

10 23 42
1 654 0
40652 22 0
Run Code Online (Sandbox Code Playgroud)

如果你想要更精确的格式化,你将不得不改变printf的格式.


Jak*_*ake 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" );
   }
}
Run Code Online (Sandbox Code Playgroud)

该行(sizeof(my_array)/ sizeof(my_array [0]))将为您提供相关数组的大小.sizeof属性将以字节为单位返回长度,因此必须将每个元素组成的字节数除以数组的总大小,每个元素占用4个字节,因为每个元素的类型分别为int.该数组总大小为16个字节,每个元素为4个字节,因此16/4产生4个数组中元素的总数,因为索引从0开始而不是1.