【C語言入門】153.指標間接運算

變數依照資料型別會依據一定的記憶體空間。我們可以利用取址運算址(&)去取得變數開頭的記憶體位址。

間接運算址和取址運算剛好相反。取址是從變數取得變數在記憶體空間中的位址。

間接運算是從記憶體空間中的位址取得在空間中的變數。

int count=9;
int *countAddr=&count;
*countAddr;
int count = 9;
int *countAddr = &count;
int result = *countAddr;
int count=9;

int a;
int *b;

a = count;   // (O) (int)  =(int)
b = count;   // (X) (int *)=(int)

a = &count;  // (X)
 (int)  =(int *)
b = &count;  // (O) (int *)=(int *)

count = *a;   // (X)
 
count = *b;   // (O)

count 不能等於 *a,因為 a 是整數,而*後面只能是記憶體位址。

int count=9;
int *countAddr=&count;
*countAddr=10;
printf("%d\n",*countAddr);
printf("%d",count);

輸出結果會是:

10
10

另外。


#include <stdio.h>

int main()
{
    int countA=9;
    int countB=10;
    int *countAddr;
    
    countAddr = &countA;
    *countAddr = 0;
    
    countAddr=&countB;
    *countAddr=0;
    
    printf("%d\n",countA);
    printf("%d",countB);

    return 0;
}

countAddr=&countB; 相當於把 countAddr 裡面存 countB 的位址,而 *countAddr = 0 相當於把 countB 設成 0。

用 * 彈性比較高,可以修改到不同的內容。

Leave a Comment

Your email address will not be published. Required fields are marked *