在c/c++中,指標的理解和使用是衡量你對該語言的掌握程度,加油不拋棄不放棄~
一、指標的概念
記憶體——由記憶體單元構成,每個記憶體單元都有專屬的位址,其是記憶體單元的編號;記憶體單元的內容——存放在記憶體單元的資料
在c/c++語言中,每個變數都分配由確定的記憶體空間。使用變數名可直接訪問記憶體中的資料;通過變數的位址也可間接訪問記憶體中的資料
特點:
1、指標本身就是乙個物件
2、指標無須在定義時就賦初值
定義指標的方法:
型別+宣告符,此處將宣告符寫成*d的形式,其中d是指標變數名,如int *p; char *ptr ,*ptr1;
注:*為解引用符;&為取址符
二、位址與指標
定義乙個變數,系統按變數型別為變數分配不同數目的記憶體單元,將其第乙個記憶體單元的位址作為變數的位址。如int a;
在c/c++中,允許定義一種特殊變數,用於存放某變數的位址,這種特殊變數即為指標。如int *p=&a; 表示為p->a,讀作p指向a,即p存放的是指向a的指標,p為指標變數
結論:存放「位址」的變數稱為指標變數,這裡的「位址」就是指標,因此變數的位址就是變數的指標。
注:1、引用不是物件,沒有實際位址,所以不能定義指向引用的指標。如int a; int &b=a; int *p=b;//這第三條語句出錯
2、一般地,指標的型別要和它所指向的物件嚴格匹配,不過也有特殊情況(出現頻率較少)。
三、指標型別的主要用途
1、引數傳遞:指標作引數可實現引數按引用傳遞的功能——比如形參改變實參。
2、動態分配:利用動態分配構建動態陣列,動態陣列需要借助指標實現。
3、資料結構:建立可伸縮的資料結構,如鍊表、棧與佇列、樹和圖等。
4、多型處理:物件導向程式設計中「執行多型性」的處理是利用指標與引用實現的。
四、指標和變數的關係
變數與指標變數
變數有位址,指標變數可以存放變數的位址
當指標變數中存放某個變數的位址後,可以說該指標變數指向這個變數
使用指標變數的三個步驟
1、定義指標變數(即給指標變數分配記憶體空間)
資料型別 *變數名如:int *a;//a是乙個整型指標變數 char *p;//p是乙個字元型指標變數
2、指標變數的初始化(即指標變數指向某物件)
為指標變數提供初值 如int a=5,*p=&a; <=>int a=5; int *p=&a;//p的初值為a的位址
注:此處不可寫成*p=&a,只能是p=&a;因為*p並不是表示指標變數,而是指標變數指向的變數a
3、通過指標變數間接訪問所指向的物件
指標型別中,有兩個特殊的單目運算子: &和*
(1)&——取位址運算子
(2)*——取值運算子
上述步驟1和2可以合併
五、函式與指標
乙個函式在編譯時被分配乙個入口位址,這個入口位址就稱為函式的指標,在c++中,函式名代表函式的入口位址。
1、指標作函式的引數——實現位址傳遞(間接傳遞),與引用作引數效果相同
2、返回指標的函式
定義格式如下:
型別 * 函式名(形式參數列)
上述,型別 * ——為函式的返回值型別,是乙個指標型別
3、指向函式的指標變數
使用指向函式的指標變數可以存放函式的指標。
定義格式如下:
函式返回值型別 (* 指標變數名)(形參型別表列)
注:上述兩個括號不可以缺少
如:double (*pf)(double);
pf=sqrt;//pf指向乙個平方根函式
這時,利用*pf呼叫該函式
如:cout<<(*pf)(2.0)六、例項分析
例項1:三個數排序——指標作為函式的形參
功能:輸入三個整數,排成從小到大的順序並輸出
//對三個數排序,假設從小到大
//#include
using namespace std;
void swap(int *i, int *j)
int main()
小結: 形參(自定義函式)<--實參位址(主調函式)
實參(主調函式)<--形參的值(自定義函式)
例項2:去掉字串首部的空格——返回指標的函式
//編寫程式,返回字串中首次出現的非空格字元開始的字串。
#include
using namespace std;
//返回字元指標的函式
char *noblank(char s)
s[j - k] = '\0';
return s; //等價於return &s[0];
}int main()
例項3:計算圓的周長和面積——函式的定義和呼叫
#include
using namespace std;
double length(double r)
double area(double r)
double function(double(*f)(double), double x)
int main()
6 1 指標的概念
為了說清楚什麼是指標,必須弄清楚資料在記憶體中是如何儲存的,又是如何讀取的。如果在程式中定義了乙個變數,在編譯時就給這個變數分配記憶體單元。系統根據程式中定義的變數型別,分配一定長度的空間。例如,c 編譯系統一般為整型變數分配4個位元組,為單精度浮點型變數分配4個位元組,為字元型變數分配1個位元組。...
27 指標的概念
本節知識點 1 指標的基本概念 2 使用指標的好處 3 變數的訪問方式 1 指標的基本概念 在計算機中,所有的資料都是存放在儲存器中的。一般把儲存器中的乙個位元組稱為乙個記憶體單元,不同的資料型別所占用的記憶體單元數不等,如整型量佔4個單元,字元量佔1個單元等。為了正確地訪問這些記憶體單元,必須為每...
6 1指標的概念?
如果乙個程式中定義乙個變數,在編譯時就給這個變數分配記憶體單元。系統根據程式中的定義的變數型別,分配一定的長度空間。vc c 6.0中,乙個整型變數分配4個位元組,微單精度浮點數變數分配4個位元組,為字元型變數分配1個位元組。記憶體區的每乙個位元組有乙個編號,這個就是 位址 它相當於旅館中的房間號。...