奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

C語言指針和數組的學習方法

時間:2025-04-23 20:47:51 C語言 我要投稿
  • 相關推薦

C語言指針和數組的學習方法

  C語言中的指針和數組一直是讓自己覺得頭疼的問題,最近好好研究了一下,將自己的體會寫下來,當做總結吧。

C語言指針和數組的學習方法

C語言指針和數組的學習方法

  先說指針,首先指針是一個變量,但它存的是變量的地址,利用指針可以間接訪問一個變量,比如下面這個例子:

  int a;

  int *p=&a;

  定義了一個整型變量a,定義了一個指向整型變量的指針變量p,這時候指針變量p里面存的就是整型變量a的地址。在后面要為a賦值的時候,比如賦值為10,可以這樣寫:a=10;也可以這樣寫:*p=10;這兩個表達式都是等價的,也就是說,可以通過*這個符號,去訪問某個地址的內容。我覺得之前看過的一個比喻非常好(具體出處忘了),說*這個符號就像一把鑰匙,而指針變量就像一把鎖,拿*這把鑰匙把指針變量這把鎖打開,然后就能往打開后的這個空間里面存放東西。我覺得指針這個東西很神奇,因為它能指向不同的變量,即不同的'空間。

  再來說數組,數組最頭疼的就是數組名,但數組名的定義已經很明確了,數組名是指向數組首元素的指針常量,這個定義簡直就是一針見血,來看一些例子:

  1.

  int n[10] ;

  定義了一個有10個元素的整型數組n,那么根據定義,數組名n和&n[0]是等價的,如果我們這樣操作:n+1,那么n+1就和&n[1]是等價的,因為這里的n是一個指向整型變量的指針常量,這里n的類型很重要。

  2.

  int n[10][10];

  定義了一個有100個元素的二維整型數組n,那么n是否和&n[0][0]是等價的呢?答案是否定的。當我們定義了n[10][10]這個二維數組時,編譯器“咔嚓”、“咔嚓”將一段內存空間剪成10份,然后又“咔嚓”、“咔嚓”將每一份空間再剪成10份,然后便得到了100個最小空間為一個int型大小的空間,那么n代表什么呢?數組名的定義:數組名是指向數組首元素的指針常量,這里n代表指向上面編譯器第一次將內存“咔嚓”、“咔嚓”剪成10份的首元素(里面包含10個int型)的指針常量,這就是n的類型,很明顯,n的類型不是一個指向int類型的指針變量,所以n和&n[0][0]并不等價。這時我們如果這樣操作:n+1,那么n+1便指向了上面編譯器“咔嚓”的第二段,寫到這你會想,既然n和&n[0][0]并不等價,那么n和&n[0]是否等價呢?答案是對的。多維數組有個很特殊的地方,因為它還有這樣的數組名:n[0],這個代表什么呢?答案就是n[0]才是和&n[0][0]等價的。所以最后得出的結論是:*n[0]代表n[0][0],*n代表n[0],**n代表n[0][0],這種感覺就像,沒開鎖的時候(n),在你面前放著的是整個大寶箱(整個數組n[10][10])里面的第一個大寶箱,里面裝著10個小寶箱(n[0]),當你第一次把鎖打開(*n),你面前放著的是10個小寶箱里面的第一個小寶箱,當然你也可以選擇第二個(*n+1),你再一次把鎖打開(**n),就能看見寶石啦!

  更多維的數組也可以這樣分析。

  為了驗證上面的說法,在C編譯器里面輸入下面的代碼:

  #include "stdio.h"

  main()

  {

  int n[2][2] = {1, 2, 3, 4};

  printf("n[0][0] is %d ", n[0][0]);

  printf("*n[0] is %d ", *n[0]);

  printf("**n is %d ", **n);

  printf("*(*n+1) is %d ", *(*n+1));

  printf("**(n+1) is %d ", **(n+1));

  printf("n[0] is %d ", n[0]);

  printf("*n[0] is %d ", *n[0]);

  printf("n is %d ", n);

  printf("*n is %d ", *n);

  }

  運行結果是:

  運行結果和上面分析的一致。但,這里有個問題是,既然n[0]和n的結果是一樣的,那為什么*n[0]和*n的結果不一樣呢?原因是類型不一致,*n[0]直接就把小寶箱打開了,但*n才剛打開上一層呢。但C語言提供了穿越的方法,這樣:*(int *)n,把n直接強制轉換成一個指向int類型的指針,然后用*打開,便取得了寶石,太神奇了!

【C語言指針和數組的學習方法】相關文章:

c語言知識:數組指針和指針數組的區別07-27

C語言數組與指針詳解08-15

C語言指針數組的概念07-19

c語言數組指針變量的說明和使用07-26

如何使用C語言數組指針09-14

C語言-15:多維數組與指針07-25

C語言中指針與數組的區別10-09

C語言中指針與數組的詳解及區別09-07

C語言指針和數組基礎知識10-26

主站蜘蛛池模板: 昌吉市| 北碚区| 鹿泉市| 西宁市| 望江县| 吉木乃县| 呼伦贝尔市| 嵊州市| 眉山市| 澳门| 陆丰市| 郴州市| 尉犁县| 积石山| 泗阳县| 晋江市| 鲁山县| 新乡县| 上饶县| 平原县| 乐安县| 长垣县| 天台县| 密山市| 元氏县| 太康县| 阳谷县| 南康市| 睢宁县| 清镇市| 泽库县| 钟祥市| 西安市| 潼南县| 旬阳县| 名山县| 建瓯市| 静海县| 鹿泉市| 南雄市| 洪泽县|