指標(pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(pointed to)存在電腦儲存器中另乙個地方的值。也就是通過位址可以找到所需的變數單元,可以說,位址指向該變數單元。
舉例說明:
#include #include int main()
總結一下,其實指標就是變數,用來存放位址的變數(存放在指標中的值都當成位址處理)
#include #include int main()
我們都知道,變數有不同的型別,整型,浮點型等等。那指標有沒有型別呢?其實是有的!比如
int num = 10;
p = #
char* pc = null;
int* pi = null;
short* ps = null;
long* pl = null;
float* pf = null;
double* pd = null;
不難看出,指標型別的定義方式就是type + *。其實上面**中char*就是為了存放char型別變數的位址,short*就是為了存放short型別變數的位址。其他同樣。
來看乙個例項:
從結果中我們不難看出,指標的型別決定了指標向前或者向後走一步有多大距離。
這裡我們在使用指標時要注意,**不能寫成下面這樣:
int* p = 10;
printf("%d\n",*p);
//這樣程式會崩潰,屬於c語言未定義行為
關於指標的解引用
#include #include int main()
結果如下圖所示:
要注意指標的型別決定了,對指標解引用的時候能有多大許可權(能操作幾個位元組)。比如說char的指標解引用就只能訪問乙個位元組,但是int的指標解引用就能訪問四個位元組。比如同樣的程式修改為下面這樣:
#include #include int main()
最後結果就變為0了; 指標和指標的指標
int main void 首先在vc6.0裡面新建乙個c 控制台工程,然後鍵入以上 最後按f10進行除錯。在watch視窗中鍵入如上圖所示變數資訊,首先,對於第一行data 5沒問題 然後對data變數採用取位址符 倒數第三行 data 0x0012ff7c,也即data存放的記憶體位址為0x00...
指標和指標的指標
drzy 在說指向指標的指標之前,不得不說指向變數的指標。先看如下示例 1.指向整型指標 先看如下示例 1 include 2 using namespace std 3 4 int main 5 執行結果如下 由上圖可以清楚的知道,輸出整形變數a的值是5,指標變數p的值是001bfd18,而 號的...
野指標,空指標和無型別指標
一.野指標 所謂的野指標指的是乙個指標變數指向了不可使用的記憶體空間。產生野指標三個原因 1 指標變數建立時候沒有被初始化 任何指標變數在建立的時候,不會自動成為null指標,它的預設值是隨機的,因此該指標就會成為乙個野指標,可能指向一塊不可使用的記憶體空間。例如char p 這樣建立乙個指標p,指...