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 您好不同地區的服務 有所不同,您可以登陸網上營業廳 ...