C語言三種方法調用數組


 1 #include <stdio.h>
 2 /********************************* 
 3 * 方法1: 第一維的長度可以不指定 * 
 4 * 但必須指定第二維的長度 * 
 5 *********************************/ 
 6 void print_a(double a[][5], int n, int m) 
 7 { 
 8 int i, j; 
 9 
10 for(i = 0; i < n; i++) 
11     { 
12         for(j = 0; j < m; j++) 
13         {
14         printf("%lf    ", a[i][j]);
15         } 
16 
17         printf("\n"); 
18     } 
19 //printf("%d ", a[1][0]+a[2][0]);//輸出3+6,
20 //a[4][4]=a[1][0]+a[2][0]; //即驗證是不是真能直接操作數組,答案是可以
21 } 
22 /**************************************************************
23 *方法2: int (*a)[5]是指向一個一維數組(有5個int型元素)的指針,*
24 *因為原數組每行有5個元素,故int (*a)[5]中必須為5 * 
25 **************************************************************/ 
26 void print_b(double (*a)[5], int n, int m) 
27 { 
28 int i, j; 
29 
30 for(i = 0; i < n; i++) 
31 { 
32 for(j = 0; j < m; j++) 
33 printf("%lf    ", a[i][j]);
34 
35 printf("\n"); 
36 } 
37 }
38 /*********************************** 
39 *方法3: 利用數組是順序存儲的特性, * 
40 * 通過降維來訪問原數組! * 
41 ***********************************/ 
42 void print_c(double *a, int n, int m) 
43 { 
44 int i, j; 
45 
46 for(i = 0; i < n; i++) 
47 { 
48 for(j = 0; j < m; j++) 
49 printf("%lf    ", *(a + i*m + j)); 
50 
51 printf("\n"); 
52 } 
53 
54 }
55 int main(void) 
56 { 
57 double a[5][5] = {{1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0}, {7.0}, {0.0, 8.0}}; 
58 
59 printf("\n方法1:\n"); 
60 printf("輸出a:%lf\n",a);
61 print_a(a, 5, 5);
62 printf("%lf ", a[1][0]+a[2][0]);//輸出3+6,
63 printf("%lf ", a[1][0]+a[2][0]);//輸出3+6
64 
65 
66 
67 printf("\n方法2:\n"); 
68 printf("輸出a:%lf\n",a);
69 print_b(a, 5, 5); 
70 
71 printf("\n方法3:\n"); 
72 printf("輸出&a[0][0]:%lf\n",&a[0][0]);
73 printf("輸出&a:%lf\n",&a);
74 printf("輸出a:%lf\n",a);
75 print_c(&a[0][0], 5, 5); //&a是會警告的,&a[0][0]才最好
76 
77 getchar(); 
78 return 0; 
79 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM