深入了解C指針之---指針操作和比較
該系列文章源于《深入了解C指針》的閱讀與了解,由于本人的見識和知識的欠缺可能有誤,還望大家批評指教。
指針作為一種特殊類型的變量,必須遵守C語言中變量先聲明後使用的原則。本節内容中指針的操作主要包括指針的聲明、指針值的擷取、指針的解引、指針的列印、指針的閱讀及其他内容。
一、指針的操作:
1、指針的聲明,切記指針是一種特殊變量,這種變量中沒有直接存儲數值,存儲的數值是另外變量的位址。
其中,看代碼第6、7、8行,都是指針變量的聲明,無論*的位置如何,靠近int還是變量名,還是哪個都不靠近,都可以表示,根據自己的習慣堅持即可,個人建議靠近變量名好。
2、位址操作符,使用&擷取變量位址的符号,常用來為指針變量指派。
其中、代碼的第6、7、9行,都是位址操作符的應用
3、指針的列印,使用%p占位符即可列印指針變量的值,另外變量的位址。
其中、代碼的第12、13、14、19、21、23行都是列印指針值的應用
4、指針的解引用,通過指針擷取指針值對應的變量的值。
其中、代碼的第12、13、14、19、21、23行都是指針解引用的應用。
1 #include <stdio.h>
2
3 int main(int argc, char **argv)
4 {
5 int iVar = 19;
6 int *ptrVar1 = &iVar;
7 int* ptrVar2 = &iVar;
8 int * ptrVar3 = NULL;
9 ptrVar3 = &iVar;
10
11 printf("the iVar is %d and address is %p\n", iVar, &iVar);
12 printf("the ptrVar1 is %p and *ptrVar1 is %d\n", ptrVar1, *ptrVar1);
13 printf("the ptrVar2 is %p and *ptrVar2 is %d\n", ptrVar2, *ptrVar2);
14 printf("the ptrVar3 is %p and *ptrVar3 is %d\n", ptrVar3, *ptrVar3);
15
16 iVar++;
17 printf("the iVar is %d and address is %p\n", iVar, &iVar);
18 (*ptrVar1)++;
19 printf("the ptrVar1 is %p and *ptrVar1 is %d\n", ptrVar1, *ptrVar1);
20 (*ptrVar2)++;
21 printf("the ptrVar2 is %p and *ptrVar2 is %d\n", ptrVar2, *ptrVar2);
22 (*ptrVar3)++;
23 printf("the ptrVar3 is %p and *ptrVar3 is %d\n", ptrVar3, *ptrVar3);
24
25 return 0;
26 }
二、指針的補充:
1、null在C語言中充分展現了C語言的邏輯混亂,C語言中null的出現主要和指針變量有關。
null宏定義中被定義為: #define NULL ((void *)0)這種定義一般在stddef.h、stdlib.h和stdio.h中出現;
null可以用來初始化指針變量,表示指針變量指向空,也可以直接将指針變量指派為零也可;
null可以在字元中表示全為0的位元組,表示不包含任何内容;
人就像是被蒙着眼推磨的驢子,生活就像一條鞭子;當鞭子抽到你背上時,你就隻能一直往前走,雖然連你也不知道要走到什麼時候為止,便一直這麼堅持着。