解釋C語言中的指標和一維陣列


指標是一個儲存另一個變數地址的變數。

特性

指標的特性解釋如下:

  • 指標節省記憶體空間。
  • 由於直接訪問記憶體位置,指標的執行速度更快。
  • 藉助指標,可以高效地訪問記憶體,即動態分配和釋放記憶體。
  • 指標用於資料結構。

指標的宣告、初始化和訪問

考慮以下語句:

int qty = 179;

在記憶體中,變數可以表示如下:

宣告指標

這意味著“p”是一個指標變數,它儲存另一個整型變數的地址,如下所示:

Int *p;

指標的初始化

地址運算子 (&) 用於初始化指標變數。

例如:

int qty = 175;
int *p;
p= &qty;

透過指標訪問變數

要訪問變數的值,使用間接運算子 (*)。

例如:

這裡,‘*’可以理解為地址上的值。

以下語句等效於上述兩個語句:

p = &qty;
n = *p; n =qty

指標和一維陣列

  • 編譯器為陣列的所有元素分配連續的記憶體位置。
  • 基地址 = 陣列的第一個元素地址(索引 0)。
    • 例如:int a [5] = {10, 20, 30, 40, 50};

元素

五個元素儲存如下:

  • 如果 'p' 宣告為整型指標,則可以使用以下賦值語句讓陣列 'a' 指向它:

p = a;
(or) p = &a[0];
  • 可以使用 p++ 來訪問 'a' 的每個值,從而從一個元素移動到另一個元素。當指標遞增時,其值會增加它指向的資料型別的尺寸。這個長度稱為“比例因子”。

  • ‘p’ 和 'a' 之間的關係解釋如下:

P = &a[0] = 1000
P+1 = &a[1] = 1004
P+2 = &a[2] = 1008
P+3 = &a[3] = 1012
P+4 = &a[4] = 1016
  • 可以使用元素的索引和資料型別的比例因子來計算元素的地址。這裡給出一個例子來解釋這一點。

Address of a[3] = base address + (3* scale factor of int)
= 1000 + (3*4)
= 1000 +12
= 1012
  • 可以使用指標訪問陣列元素,而不是使用陣列索引。

  • *(p+3) 給出 a[3] 的值。

a[i] = *(p+i)

示例程式

以下是 C 語言指標和一維陣列的程式:

 線上演示

#include<stdio.h>
main ( ){
   int a[5];
   int *p,i;
   printf ("Enter 5 lements");
   for (i=0; i<5; i++)
      scanf ("%d", &a[i]);
   p = &a[0];
   printf ("Elements of the array are");
   for (i=0; i<5; i++)
      printf("%d", *(p+i));
}

輸出

執行上述程式後,將產生以下結果:

Enter 5 elements : 10 20 30 40 50
Elements of the array are : 10 20 30 40 50

更新於:2021年3月17日

7K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告