float a 10p,p a 1為什麼錯

2021-04-18 03:49:48 字數 2168 閱讀 3624

1樓:匿名使用者

正確表達

p=&a[0]+1;

p=&a[1];

定義float a[10],*p;為什麼p=&a[0]合法,p=&a不合法?

2樓:gta小雞

a是一個float陣列,p是一個float指標。陣列名本質上就是指向陣列首元的指標名,所以a也可以當做一個float* const指標使用,可以直接令p=a,也等價於p=&a[0]。而&a代表陣列名a的地址,是一個陣列指標,型別是float(*)[10],和p型別不符。

3樓:

因為float a[10],*p;這樣宣告的指標p是指向float型的指標,而a[0]就是下標為0的元素,當然就是float型,那麼&a[0]就是下標為0的元素的地址,也就是指標,賦給p等號兩邊型別匹配,所以正確。而a是陣列名,c/c++規定它也是指向下標為0的元素的指標,之不過是常指標;&a就是雙重指標了,它表示a這個陣列一行的指標(*)[10],所以賦給float *型指標p型別不匹配。若是p=a就對了,它造價於p=&a[0]。

4樓:

a為陣列直接定義不行的

若有「float a[10],*p;p=a;」,且a[0]的地址值為100,則執行「p=p+2;」後p的值是

5樓:匿名使用者

因為 float大小為4位元組,所以指標指向當前 向後2單位 *4位元組 = 100 + 2*4 = 108

6樓:匿名使用者

各編譯環境 32位 64位不同各基本型別佔的位元組也不同 比如在32位機子 turbo編譯的話 就是100+2*2=104貌似 在vc編譯的話 就是108

如有定義float a[10]; 可定義表示式a=a+1。為什麼不對?

7樓:

不能這樣做,a不能用作左值。a代表陣列的首地址,可以進行如下定義: float *p = a; p = p + 1; 加1之後,p指向陣列的第二個元素

8樓:匿名使用者

float a[10],明顯變數a為陣列。只能用下標訪問a。如a[10]=a[9]+1.

9樓:阮然宛瑰瑋

陣列的名稱是它的地址!而定義的時候系統就分配了,所以地址就相當於一個常量,而常量的值是不能改變的。

問一下:float *a 和 *float a 有什麼區別? 為什麼有時是p=&a,有時是p=a,有時是*p=a,後兩者有什麼區別?

10樓:匿名使用者

*a表示a是一個指標(地址),無論是什麼修飾*a,a都是存了一個4個byte的地址,區別是,你用了float修飾,表示這個地址指向的是float變數。

&a,表示取a變數的地址,例如int a=1;現在&a表示取a這個變數地址。

*p;表示取地址(指標)p指向的地址儲存的值,例如float a=10;

float *b=&a;//讓b指向a變數的地址*b=20;//改變指向的地址上的值

*p=a和float *p不同

前者裡*是運算子,表示取p指向的地址的值,後者只是表明這是一個指標

問:列印結果是什麼?p=(int*)(&a+1)是不是等價於*p=a[1]? 30

11樓:

輸出是2,5。*(a+1)不用說了;因為a==&a[0],&a就是整個這一行的指標,&a+1就是下一行的指標(不過這裡沒有下一行而已),實質就是&a+1指向了5後面的位置;把它強制為int *型後賦給p,p-1就只向前挪動1個int資料的空間,所以p-1指向了5,*(p-1)自然就是5。

12樓:月光疾風

列印結果分別是:2, 1

p=(int*)(&a+1)等價於*p=&a[1];注意p是指標,指向的地址,故要取a[1]的地址,前面加個取地址符&

13樓:

執行結果是:

2,5#include

int main()

;int *p;

p=(int *)(&a+1);

printf("%d,%d\n",*(a+1),*(p-1));

return 0;}

為什麼直線A1X B1Y C1 0與A2X B2Y C

原題是 為什麼直線l1 a1x b1y c1 0與直線l2 a2x b2y c2 0垂直的充要條件是a1a2 b1b2 0?由已知得 a1 b1 0,且a2 b2 0 a1,b1 a2,b2 分別是直線l1 l2的法向量 法向量就是與直線方向垂直的向量 當 l1與l2垂直時,它們的法向量 a1,b1...

國慶節為什麼是10月1日,國慶節為什麼是十月一日

我不知道,知道的請告訴我,謝謝。國慶節為什麼是十月一日?5 因為中國在1949年10月1日成立,2009年是中國成立60週年 你太搞笑了,當然是1949年建國的紀念日啊,不就是10月1日建國的麼 因為10月1日是三位最小的數字!十月革命點燃了共產主義的兩把大火,其中一把就是中國,內戰結束後新中國舉行...

電信10元1g三天流量什麼開,電信10元1g3天流量包開通傳送幾

您好這應該是當地電信的優惠活動,您可以撥打10000號請工作人員幫您開通,也可以登陸網上營業廳 掌上營業廳自助開通 電信10元1g3天流量包開通傳送幾?電信三bai 天流量包10元包含包du1gb手機省內上網流 編輯4g3tb10傳送到10001 您好不同地區的服務 有所不同,您可以登陸網上營業廳 ...