小編給大家分享一下最新總結C語言中關于指針等相關理解和使用事宜,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
地址是存在類型的,是不是感覺好奇怪,指針不是代表一個地址的嗎,地址還有類型嗎?看一個例子:
int *ip; /* 一個整型的指針 */ double *dp; /* 一個 double 型的指針 */ float *fp; /* 一個浮點型的指針 */ char *ch; /* 一個字符型的指針 */
其實指針永遠都只是一個代表一個地址的十六進制數,所謂的類型,指的是指針指向的變量的類型。
如何定義一個指針,前面的例子應該知道了,那么如何打印那個十六進制的地址是多少和或者指針指向的數據是多少:
//通過&運算符獲取了i的地址并保存到intP中去 int *intP; = &i; printf("intP存儲的地址為:%p,存儲的地址指向的數據為:%d\n", intP, *intP);
指針可以進行運算:++、--、+、-
此外,指針還可以用關系運算符進行比較,如 ==、< 和 >
int intArr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //先定義一個指針執行數組第一個元素 int *intArrP = &intArr[0]; printf("此時intArrP存儲的地址為:%p,數據為:%d\n", intArrP, *intArrP); //自增一下看看結果(每增加一次,它都將指向下一個整數位置) intArrP++; printf("自增以后intArrP存儲的地址為:%p,數據為:%d\n", intArrP, *intArrP);
指針還可以指向指針
int data = 5201314; int *p1 = &data; int **p2 = &p1; printf("%d\n", data); //都是5201314 printf("%d\n", *p1); printf("%d\n", **p2);
結構體中對指針的使用會稍微特殊一點,主要因為結構體本身的特殊性,想使用結構體中的一個值,一般分為通過結構體自身和指向結構體的指針二種情況,具體看下面的例子:
struct Node { int val; }; //先建立一個結構體數據 struct Node node; node.val = 1; struct Node *nodeP; //創建一個指向剛剛的結構體的指針 nodeP = &node; printf("%d\n", nodeP->val);//指向結構體的指針用-> printf("%d\n", node.val);//結構體自身用.
看完了這篇文章,相信你對“最新總結C語言中關于指針等相關理解和使用事宜”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。