C++中的指針是非常好用的,但由于各種指針類型的繁多,很容易遺忘。
1)一級指針
例如
char str[10];
char str[10] = {0};//初始化
此時(shí)str為一指向10個(gè)char類型數(shù)據(jù)的內(nèi)存的首地址;
有時(shí)需要?jiǎng)討B(tài)分配內(nèi)存,則可以按照如下進(jìn)行操作
char *str;//此時(shí)str為一個(gè)字符指針變量,但未指向任何地址,浮空
int N = 10;
str = new char [10];
運(yùn)用new關(guān)鍵字,便可以動(dòng)態(tài)申請了。
2)二級指針
例如
char image[100][100];
char image[100][100] = {{0}};
此時(shí)image為指向100*100的二維char型數(shù)組
但如果需要?jiǎng)討B(tài)分配內(nèi)存空間呢?此時(shí),則可以
char **image;
image = new char *[100];//image指向一個(gè)一維指針數(shù)組的首地址
for(int i = 0; i<100; i++)
image[i] = new char [100];//為每一個(gè)一級指針image[i]分配長度為100的char型數(shù)組
當(dāng)有一個(gè)維度確定數(shù)目時(shí)
char (*image)[100];//此時(shí)可以看成n*100的二維數(shù)組
image = new int [n][100];
3)內(nèi)存的釋放
若為指針指向一個(gè)變量,則需用delete
例如
int *p;
int N = 100;
p = &N;
delete p;
或者
int *p;
p = new int (100);//此時(shí)p指向初始值為100的整形變量
delete p;
若指針p指向一維或多位數(shù)組,則需用delete[] p;
驢兒先生筆記,不斷更新中zzz...