fork download
  1. #include <stdio.h>
  2.  
  3. #define UNVAL -1
  4. #define MAX_X 10
  5. #define MAX_Y 4
  6. void print( int a[MAX_Y][MAX_X] ){
  7. int i,j;
  8. for(i=0;i<MAX_Y;i++){
  9. for(j=0;a[i][j]!=UNVAL;j++){
  10. printf("a[%d][%d]=%2d ", i, j, a[i][j]);
  11. }
  12. printf("\n");
  13. }
  14. }
  15.  
  16. // データの無効値を作っておいて、それを配列の終わりとするやり方
  17. void func1(void){
  18. int a[MAX_Y][MAX_X]={
  19. {1,UNVAL},
  20. {2,3,UNVAL},
  21. {4,5,6,UNVAL},
  22. {UNVAL},
  23. };
  24. print(a);
  25. }
  26.  
  27. // ・ポインタの配列を作り、ローカル変数の一次元配列のアドレスを記憶する。
  28. // 配列の長さがバラバラなので最後は無効値が必須
  29.  
  30. void func2(void){
  31. int a1[]={10,UNVAL};
  32. int a2[]={20,30,UNVAL};
  33. int a3[]={40,50,60,UNVAL};
  34. int *p[]={a1,a2,a3};
  35. int i,j;
  36. for(i=0;i<sizeof(p)/sizeof(p[0]);i++){
  37. for(j=0;(p[i])[j]!=UNVAL;j++){
  38. printf("a[%d][%d]=%2d ", i, j, (p[i])[j] );
  39. }
  40. printf("\n");
  41. }
  42. }
  43.  
  44. int main(void) {
  45.  
  46. func1();
  47. func2();
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0s 5516KB
stdin
Standard input is empty
stdout
a[0][0]= 1 
a[1][0]= 2 a[1][1]= 3 
a[2][0]= 4 a[2][1]= 5 a[2][2]= 6 

a[0][0]=10 
a[1][0]=20 a[1][1]=30 
a[2][0]=40 a[2][1]=50 a[2][2]=60