C語言講義——指針(pointer)


指針是C語言最重要的特性之一,
也是最容易被誤解的特性之一。


現代計算機把內存分割為字節(Byte),
每個字節都有唯一的地址(Address),
如果內存中有n個字節,可以把地址看做0~n-1的數。

程序中的每個變量都占據字節(至少1字節),把第一個字節的地址稱為”變量的地址”,
假設變量int i占有內存2000~2003,則變量i的地址是2000。

指針變量(pointer variable)

口訣:
變量有位置,位置有地址
指針是變量,其值為地址

指針就是地址,指針變量就是存儲地址的變量。
C語言要求每個指針變量只能指向一種特定的類型的對象。

int *p;
double *q;
char *r;

指針變量的賦值:

int i=2099;
int*  p;
P = &i;
printf("%d", *p);

值和地址

&取地址運算符
*間接尋址運算符

下例中:

i是普通變量,&i是存儲變量的地址
p是指針,是地址,*p是指針指向地址的值

#include <stdio.h>
main() {
    int  i=2099;
    printf("變量的值:%d\n", i  );
    printf("變量的地址:%x\n", &i  );

    int *p;
    p = &i;
    printf("指針(值):%d\n", *p  );
    printf("指針(地址):%x\n", p  );
}

NULL指針

在變量聲明時,如果沒有確切的地址可賦值,為指針變量賦一個NULL值是一個良好的編程習慣。
賦為NULL值的指針稱為“空指針”。

#include <stdio.h>
int main(int argc, char *argv[]) {
	int  *ptr = NULL;
	printf("ptr的值是:char=%x, int=%d\n",ptr,ptr);

	return 0;
}

運行結果:

ptr的值是:char=0, int=0


免責聲明!

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



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