程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> (C初學) 對數組與指針的一些淺顯的理解,初學數組

(C初學) 對數組與指針的一些淺顯的理解,初學數組

編輯:關於C語言

(C初學) 對數組與指針的一些淺顯的理解,初學數組


  因為課堂上沒聽懂,又看不懂教科書(《C語言程序設計教程》第3版 譚浩強,張基溫編著)上晦澀的表達方式,昨天晚上特意拿《C語言入門經典》這本書自己研究了一晚的數組與指針。

  先來一個簡單的程序:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5   char board[3][3]={
 6             {'1','2','3'},
 7             {'4','5','6'},
 8             {'7','8','9'}
 9             };
10   
11 
12   printf("value of board[0][0] : %c\n", board[0][0]);
13 
14   printf("value of *board[0] :   %c\n", *board[0]);
15   printf("value of **board :     %c\n", **board);
16 
17   
18 
19   return 0;
20 
21 }

  

 1 輸出如下:
 2 
 3   value of board[0][0] : 1
 4 
 5   value of *board[0]   : 1
 6 
 7   value of **board     : 1
 8 
 9  
10 
11   board[0][0]

  在二維數組board[3][3]中:

  board        相當於一個指針(*board/board[0])的指針,指向第0個子數組的第0個元素,即二維數組board[3][3]的首個元素。即,board表示的是二維數組裡的第0個子數組的地址。
  *board      使用取消引用運算符*,取消對board這一指針的引用,得到board所指的值。*board相當於一個指針,指向第0個子數組裡的元素。 *board 等同於 board[0] (*board == board[0] ),即二維數組裡的第0個子數組中第0個元素的地址。
  **board     再次使用取消運算符*,取消對*board這一指針的引用,得到*board所指的值。即,**board是第0個子數組中第0個元素的值。

  board[0]    相當於一個指針,指向第0個子數組裡第0個元素,即二維數組board[3][3]的首個子數組的首個元素。即,board[0]是第0個子數組裡第0個元素的地址。
  *board[0]  使用取消運算符*,取消對board[0]這一指針的引用,得到board[0]所指的值。即,*board[0]是第0個子數組裡第0個元素的值。


  board[0][0]相當於一個變量名稱。

 

  *board[0]與**board是對 數組 相當於 指針的應用。

 

  

 

  這就是我昨天晚上自學的收獲與體會了。

  這是我第一次在博客園發隨筆,而且不確定我的總結有沒有錯誤,或者有更簡潔、更透徹的理解,懇請各位志同道合的同學、各位大牛批評指教。謝謝大家~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved