b、int ** 表示指向指標的指標:int m = 1; int *p = &m; int ** a = &p;
c、陣列指標和指標陣列:指標陣列:int*:int* a[3]:array of pointers,陣列指標:int(*):int (*a)[3]:a pointer to an arraya、定義乙個一維陣列,陣列名是這個陣列的首位址
b、int a[5]; a指向 a[0];a[0]是int的元素,a的型別就是int**、a 這個位址指向a[0]int元素,所以a+1偏移4
*、&a 這個位址指向整個陣列,&a的型別是int(*)[5],所以&a+1偏移20因為a是a[0]的位址,為int *型別,所以可以用乙個int *型別的變數來接收它,int *p=a;
int a[5]=;
因為a是int *型別
所以可以用乙個int *型別的變數來接收它
int *p=a;
這裡的p就是指向的是a[0]的首位址
*p是a[0]的值
*(p+1)是a[1]的值
*(p+i),都是依次訪問位址對應的元素,這裡p位址不變
*p++,都是依次訪問位址對應的元素,這裡p位址改變
所以也可以用*p++,兩個都是單目運算子,從右往左
二維陣列,比如a[3][4]雖然有3行4列,但是在記憶體裡面還是是一段連續的位址
a是二維陣列的首位址,a指向二維陣列第乙個儲存單元:
a是指向a[0]這個一維陣列,a的型別是 是int(*)[4]
a+1 加的是16個位元組
a[0]是什麼,是一維陣列的陣列名
a[0]指向a[0][0],a[0]的型別是int *
所以a[0]+1 是加的4個位元組
a int(*)[4]
&a int(*)[3][4]
a[0] int*
a[0][0] int
a int(*)[4]
&a int(*)[3][4]
a[0] int*
a[0][0] int1、&a int(*)
2、a int(*)
3、a int*
4、a int
&a int(*)
a int(*)
a int(*)
a int(*)
a int*
a int
指標陣列:int*:int* a[3]:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標
陣列指標:int(*):int (*a)[3]:a pointer to an array,即指向陣列的指標(*a)表示乙個整體,*號本來就是宣告變數為指標的符號,那說明a就是乙個指標,並且是執行a[5]陣列的指標這裡int*是乙個整體,說明是int指標型別,後面的a[4]也就表示陣列裡面就是存的int *的東西int *a[4];int c[4]=; a[1]=&c[1];//指標陣列
int (*b)[4];int c[4]=; b=&c; //陣列指標
#include usingnamespace
std;
intmain()
;
int *a[4]; //
指標陣列
int (*b)[4]; //
陣列指標
b=&c;
//將陣列c中元素賦給陣列a
for(int i=0;i<4;i++)
//輸出看下結果
cout<<*a[1]輸出2就對
cout<<(*b)[2]輸出3就對
return0;
}
指向int指標的指標:int m = 1; int *p = &m; int ** a = &p;
在定義乙個變bai量的時候,*表示指標
比如duint * a,表示a是乙個指向int的指標
int **a相當於(int *) * a,表示a是乙個指向int *的指標(通俗dao點說就是a的值是乙個指標,或者說位址),即指向int指標的指標,這是2級指標。
int m = 1;
int *p = &m;
int ** a = &p;
int**是指向指標的指標,和陣列與指標的關係不是一回事
new其實就是告訴計算機開闢一段新的空間,但是和一般的宣告不同的是,new開闢的空間在堆上,而一般宣告的變數存放在棧上。new開闢的空間在堆上,而一般宣告的變數存放在棧上。new出來的是一段空間的首位址。所以一般需要用指標來存放這段位址。int *p = new int(3);//int 3
int *p = new int[3];//有三個元素的int陣列a、為了讓new分配乙個陣列物件,我們需要在型別名之後跟一對方括號,在其中指明要分配的物件的數目。
b、int *p = new int[int_num];//方括號中的數必須是整型,但不必是常量delete p; //p必須指向乙個動態分配的物件(或空)
delete p; //p必須指向乙個動態分配的陣列(或空)
指標相關問題
指標相關問題 1.指標陣列,陣列指標 2.指標函式,函式指標 3.指標常量,常量指標 4.指標和引用的區別 5.指標和陣列 6.陣列名退化為指標 7.如何避免野指標 8.含有虛函式類的大小 虛表指標 9.指標作為函式引數 1.陣列指標 int p n 指標陣列 int p n 陣列指標 如要將二維陣...
C指標相關
const是乙個修飾符,告訴編譯器這個變數不可以被更改,而指標代表兩個東西,本身和指標所指的位址的內容,那麼指標遇到const將會發生什麼?判斷技巧 如果const出現在指標 的前面,說明不可以通過指標修改內容,所指是const 如果const出現在指標 的後面,說明所指標不可以修改所指物件,指標是...
野指標相關問題
最近在學習並行程式設計時注意到了uaf use after free 問題,引發uaf問題的原因一般是因為在釋放了某個指標指向的記憶體後,並沒有將該指標置空,從而可以通過該指標非法地修改記憶體。以前因為一直都沒有寫過大型專案,也不曾特別關心安全問題,雖然知道在指標申請後手動置為null但一度以為在f...