今天就寫一下關於C語言指針的一些感想吧。
很多同學都搞不懂指針,我一開始也雲裡霧裡沒看懂指針,而且老師又把指針說得很難的樣子。其實主要是把指針”*“的作用給弄混了,不用畏懼,細心點看就可以了。
首先簡介一下指針的概念好了。指針本身也是一個變量,只不過這個變量的值比較特殊,它不是常規的整型數或者浮點數,而是指向另一個變量地址的值。通過指針的值可以知道另一個變量的地址以及存在該地址中的具體數值(該數值可以是整型,浮點型,結構體,甚至也可以是一個指針),通過指針得到另一個變量的具體值的方法叫做引用。基本概念大概就是這麼點。
其次通過上面的概念可以引出下面的內容。”*“有兩個作用,一個是定義時出現的”*“代表這是一個指針變量,而在賦值的時候出現的”*“代表這是取出該地址所存儲的值。單單這麼說可能沒概念,那就舉個例子好了。
int a=1;//定義一個值為1的變量a
int *p=&a;//定義一個指針類型的變量p指向變量a,或者理解為將變量a的地址值賦給了指針變量p
printf("輸出指針p的引用值為:%d\n",*p);//和上一行代碼中的*p不同,這裡的*p代表的是取出指針變量所指向地址中所存儲的值
所以,輸出的內容為:”輸出指針p的引用值為:1“。
那麼由此還可以得出下面兩句等價代碼:
a=10;//給a賦值為10
*p=10;//給指針p指向的地址的變量賦值為10,因為p指向a,所以*p就是a。所以這兩句代碼等價
下面就給出完整的可運行C語言代碼:
#include<stdio.h>
int main()
{
int a=1;
int *p=&a;
printf("輸出指針p的引用值為%d\n",*p);
*p=10;
printf("輸出*p的值為:%d,此時a的值為%d\n",*p,a);
printf("輸出指針p的值,即變量a的地址值為:%d\n",p);
return 0;
}
C++之我們為什麼選擇使用智能指針 http://www.linuxidc.com/Linux/2016-01/126950.htm
指針與C++的基本原理 http://www.linuxidc.com/Linux/2015-10/124519.htm
C語言與指針學習隨筆 http://www.linuxidc.com/Linux/2015-09/123586.htm
C語言函數指針與回調函數 http://www.linuxidc.com/Linux/2015-07/120532.htm