C 指標相關問題

2022-03-01 18:41:36 字數 2476 閱讀 7715

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 using

namespace

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...