定義int a1,2,3,4,5為什麼int

2021-08-11 19:12:46 字數 3768 閱讀 2911

1樓:匿名使用者

陣列名a是指向陣列a[0]的指標,其型別為int *,因此a與&a[0]相當。

&a是指向所定義陣列的指標,如題目中,&a的型別為int (*)[5]。因此int **p=&a初始化時會報出不相容的錯誤。

可以用一下方式來進行初始化:

typedef int (*array)[5];

array p = &a;

2樓:匿名使用者

陣列名 a不 是陣列首元素,是首元素的地址,a本身就是指標,內容和 &a[0] 是一樣的。

可以測試一下

printf("%p", a);

printf("%p", &a[0]);

3樓:gis廣益

a 是陣列的首地址 是常量 不是變數 所有出差了!

4樓:匿名使用者

陣列就是指標;

通過:cstring tmp;

tmp.format(_t("a = %d"), a);

tmp.format(_t("a = %d"), &a);

測試,a是陣列首元素的地址,和&a是一樣的!!!!!

這裡需要使用一個強制轉換:

int** p = (int**)a;

為什麼int a[]={1,2,3,4,5}是對的,而int*p={1,2,3,4,5}是錯的?求解釋

5樓:匿名使用者

int a=實際上是bai用初始

化空間du後,分配給a ;int*p這個定zhi義根據daoansi c++的規定p為指標,必須內顯式為其分配空間,否則容p指向的未知不定。

二者的差異是ansi/iso c++規範決定的。

6樓:

前面定義的來整型陣列,沒錯;

第二個自定義的是一個整型指標變數,但是你給它初始化了5個值,而它只能指向一個整型的變數,所以編譯錯誤;

你可以這樣定義:

int a=;

int * p =a;

7樓:滬上新視界眼科

個人看法:誤解bai了指標和

du陣列的關係!數

zhi組int a和指標 int *p中,daoa和p是可以賦值的回!即p=a成立。但是,答不準確的說,int a代表的是一個起始地址,這個地址儲存在a中;int *p代表的是一個整形變數!

不能用{}賦值。

8樓:匿名使用者

int a;

int *p = &a; //宣告一個指標後面是要跟一個地址的。

指標有指標的初始化方法,陣列有回

陣列的,要牢記,不能混淆答

你可以參考這個

9樓:匿名使用者

第一個int a說明a是一個陣列,裡面存放的是整形變數,而第二個int *p說明p是一個指向整形變數的指標,只有一個整形空間,準確的說這二個定義時所擁有的記憶體空間就不相同。

10樓:匿名使用者

對陣列來說,這樣的初始化是對的,但對指標來說,它初始化的是地址,舉個例子 char * p=「string」,它不是指的是* p=「string」,而是p等於這個字串的首地址 。

11樓:匿名使用者

*p為指標,p中儲存的是地址,你為地址初始化陣列元素顯然是不正確的

12樓:匿名使用者

前面是 int型別的陣列 當然無錯

後面你是想表達 指標型別? 那你後面大**裡面又是int··

答案為什麼是5?

13樓:匿名使用者

這個問題的關鍵是理解 &a

a是一個陣列名,也就是陣列的首地址。

對a進行取地址運算子,得到的是一個指向陣列的指標!!!!這句話尤為重要!

也就相當於

int (*p) [5] = &a;

p是一個指標,它指向的是一個包含5個int元素的陣列!!

那麼執行p+1後,p的偏移量相當於 p + sizeof(int) * 5 !!

而程式中強制將指標p轉換成一個int* 那麼 p -1 其實就是 p - sizeof(int)

所以,p -1 指向了陣列中得最後一個元素,也就是 5

14樓:匿名使用者

&a + 1

&a的型別為 int (*)[5] 那麼&a+1 後 +1 其實 +上5*sizeof(int)的大小

然後你你又強轉為int*型別 而p-1 減去的其實就int的大小 因為他的型別為int*

15樓:匿名使用者

肯定是5啊你認為是什麼

答案為什麼是5?如題 謝謝了

16樓:憽人擦

這個問題的關鍵是理解 &a a是一個陣列名,也就是陣列的首地

址。 對a進行取地址運算子, 得到的是一個指向陣列的指標 !!!!這句話尤為重要!

也就相當於 int (*p) [5] = &a; p是一個指標,它指向的是一個包含5個int元素的陣列!! 那麼執行p+1後,p的偏移量相當於 p + sizeof(int) * 5 !! 而程式中強制將指標p轉換成一個int* 那麼 p -1 其實就是 p - sizeof(int) 所以,p -1 指向了陣列中得最後一個元素,也就是 5

麻煩採納,謝謝!

的值是多少?以及為什麼?謝謝啊

17樓:beibi小孑

p=[-3],這個不會出錯?

如果是p[-3]就是3;因為為是把數字6的地址給p了,p[-3]就是在a[5]地址上減3,指到 a[2],a[2]的值是 3

18樓:匿名使用者

p[0]是指當前指向的元素,p[-3]就是指前面第三個元素

19樓:忽視的發生

#include

using namespace std;

int main()

;//a[8],a[9]預設初始bai化為0int *p;

p=&a[5];//指標dup現在zhi指向陣列a中的dao第六個即a[6];

//p[-3]即表示指標p向前移動三個

回單位,也答就是a[2],注意實際地址變數的值不變,p仍是隻想a【5】

cout<

}加分吧,哥們,很辛苦的,嘿嘿

20樓:匿名使用者

按照p[0]=a[5],p[-3]=a[2];也就是a[2]=3;

是多少?

21樓:匿名使用者

5。p=&a+1指向的是陣列組a[4]的後面一個int單元,

p-1指向a[4]=5

若有定義int a 3,b 2,c 1,則執行程式段if

a的值為1 條件a b c的值為假,所以執行a c,結果a 1 a b c相當於 a b c 先計算a b,為真,值為1,計算1 c,為假,整個表示式的值就是假 若有定義 int a 3,b 2,c 1 則執行程式段if a b c a b else a c 之後,a 問題不全啊?a的值?a b c...

定義畫筆預設為什麼選不了,ps定義畫筆預設

你好,很高興為你解答疑問。ps的 定義畫筆預設 的使用是有一定限制的,當選區太大了,或者是很複雜的多個選區組合交叉在一起的型別的話,這種選區裡面的內容就不會被 畫筆預設 所識別。一般情況下,只有簡單的像是矩形或者別的不規則但很單一的選區,裡面的內容才能被自定義為畫筆預設。白色的內容是無法定義成畫筆的...

i57400好還是i56500好為什麼

官方引數 i5 7400,主頻3g,睿頻3.5g i5 6500,主頻3.2g,睿頻3.6g在功耗方面i5 6500要大一點,總體來說版是相差無幾的。一般建權議那個便宜買哪個,價效比高 酷睿i5處理器是英特爾的一款產品,同樣建基於intel nehalem微架構。與core i7支援三通道儲存器不同...