若有「float a 10p p a且a的地址值為100,則執行「p p 2」後p的值是

2021-04-18 03:49:47 字數 4210 閱讀 2048

1樓:匿名使用者

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

2樓:匿名使用者

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

c語言若有下列說明和語句:int a[4][5], (*p)[5]; p = a; 則對a陣列元素

3樓:匿名使用者

如果定義int (*p)[n];p1=a;p1++後,p指向a[1][0];

則p+j將指向a[0]陣列中的元素a[0][j]。

由於a[0]、a[1]┅a[m-1]等各個行陣列依次連續儲存,則對於a陣列中的任一元素a[i][j],指標的一般形式如下:

p+i*n+j,相應的如果用p來表示,則為*(p+i)+j;

元素a[i][j]相應的指標表示為:

*( p+i*n+j) ,相應的如果用p1來表示,則為*(*(p+i)+j)。

推出以下的等價關係:

a+i == p+i;

a[i] == p[i] == *(a+i) == *(p+i);

a[i][j] == p[i][j] == *(a[i]+j) == *(p[i]+j) == *(*(a+i)+j) == *(*(p+i)+j)。

4樓:鍵盤未找到

a.表示&a[1].

b.a[3]

c.&a[1][3]

d.a[0][2]

5樓:匿名使用者

首先呢,a是二維陣列,不解釋。

然後呢,p是一個指標,什麼樣的指標呢,就是指向一維陣列的指標,而且這個一維陣列的元素個數呢是5.

然後呢,p=a;就是把p指向a陣列。

分析選項:

a p+1 .因為p是一維陣列指標,所以p每+1就是+1行。錯誤。

b *(p+3)是指第4行的首地址,訪問不到元素。需要再*c *(p+1) + 3 對地址+3 沒啦意義d *(*p+2) *p是第0行首地址 +2 呢就是第二個元素的地址,*取資料咯。

6樓:一方通通

本題中定義了一個二維陣列c和一個陣列指標p並初始化讓它指向c,顯然此時p中的各元素為地址,

a中p+1,此時的1代表的長度是整個二維陣列c的長度,p+1將讓p指向c陣列後面的元素,故不能引用c陣列中的成員,故選項a錯誤;同理,選項b和選項c都不正確,

d中p[0]+2代表的是第一行第三個元素的地址,而*(p[0]+2)將代表第一行第三個元素的值。

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

7樓:匿名使用者

*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指向的地址的值,後者只是表明這是一個指標

2. 若有以下定義,則賦值正確的是

8樓:匿名使用者

p = &c ;意思:取c的地址給p,型別不對。p要的是指向int型的變數的地址,但這裡卻給了個float型的。

q = p;:用p給q賦值。型別不對。p是指向int的指標,q卻是指向float的指標,型別不同不能賦值。除非強制轉換。

p = null; :p是一個指標,但它不指向任何變數,多以答案對的。也就是暫時先不給它賦值,以後再賦值。

如:int a = 0, *p;

p = null;

.....

p = &a;

q = new : 語法錯誤。new是關鍵字。

9樓:匿名使用者

a: p=&c 由於p是int型指標,

&c是浮點型地址,型別不合,如果寫成p=&a就可以了b: q=p 類似,q為浮點型指標,p為整型指標,型別不合c: p=null 任何指標都可以指向空

d: q=new 不完整語句,可以寫成q=new float根據上面分析,所以只有c正確

10樓:虎光牆

a。c是浮點型的賦給整型p不對,同樣b也排除,d。new是關鍵字,怎麼能賦給q。

int a[5]={1,2,3},*p=a;則*(p+1)的值是2 求解釋

11樓:匿名使用者

int a[5]=陣列抄在記憶體中申請了五個襲連續的地址,假設是五個方框吧□□□□□,依次存放了1,2,3,0,0;

*p=a;定義了一個指標,指向a陣列的首地址,也就是第一個方框,p+1,就是指向第二個方框。*(p+1)就是取p+1個方框內的資料,據上面分析,我們可知它是2.

12樓:匿名使用者

inta[5]=,i//定義

baiduint陣列a->5個連續的int儲存空間zhi首地址dao,按順序內

值為1,2,3,4,5;int*p=a;//定義int指標,並初始化值為a,指向容陣列首地址p+=2;//指標按int型別方式向下偏移2位,指向從a[0]->a[2],值從1->3for(i=0;i==0;i++)//for迴圈i初值為0(迴圈入口),迴圈判斷為i==0(每次迴圈前),i++為迴圈增量(每次迴圈後)cout<<*(p+2);//向cout流輸出*(p+2)的值,預設為std終端,p+2同上,指向a[4],*(p+2)為指向地址值為5。該迴圈一次後中斷

13樓:夏夜風襲

p 的值是 a 的地址,運算子 * 是定址,*(p+1) 就是 a[1] ,即為 2

c語言……….若有定義語句:int a[4]={1,3,5,7},*p;p=a;則*(p+1)的值

14樓:輕曳風鈴

*(p+1)=3

樓主追問

char s[10] = ;則strlen(s)的值為strlen是計算字串長度,遇到'\0'結束返回長度,所以是則表示式pn->b/n.a * ++pn->b的值是

pn結構體指標指向結構體n,n被初始化成

pn->b/n.a * ++pn->b

<=>pn->b = pn->b+1;

pn->b/n.a*(pn->b + 1)=3/1*2=6結構體的->運算子優先順序大於++

++這裡是前加,先加1後再使用加後的值

15樓:苓愛你無言

*p=a中的a就是&a[0],即a[0]的地址,所以*p(p+1)=a[1]的值,即為3

16樓:匿名使用者

p指向a的首地址,所以*(p+1)=a[1]=3

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

17樓:gta小雞

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

18樓:

因為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]。

19樓:

a為陣列直接定義不行的

若有定義 int x 0p,則語句printfd np 的輸出結果是

0 p是取值的 p x 是定義一個指標變數p 這裡的 不是和後面的 不一樣,不是取值的,是定義指標變數的 是0.因為定義的 p 是指標,指標前加星號是指標所儲存的數值 就是x的值 0啊 恩 輸出的結果是0 int x 0,p x 這句話定義了兩個變數,int型的x和int指標型的p,並同時初始化了,...

華為P10青春版怎麼樣,華為p10和華為p10青春版是一樣用的嗎

華為p10拍攝贊,顏值高。建議可以到華為體驗店親自體驗一下或者登入華為官網來查詢引數資訊 1 外觀 圓潤超薄機身,5.1英寸2k屏和1.35mm超窄邊框的設計 前置玻璃一體化指紋,整合導航鍵,智慧觸控操作 有陶瓷白 鑽雕金 鑽雕藍 曜石黑,玫瑰金 草木綠這幾種流行配色,全新鑽雕工藝,鑽石般光澤,獨特...

int a 10,b 20,p1,p2 p1 p2 p1 p2 printfd,dp1,p2答案是20,20怎麼算?求詳細講解

p1 a p2 b p1指向a地址,p2指向b地址,p1 p2 p2指向的地址 即b的地址 賦值給p1,此時,p1和p2都指向b的地址,當然都是20了 就應該是20,20的,把p2指的內容賦給p1指的內容 提問 不是應該是指標變數p2也指向指標變數p1所指向的變數麼?回答 不是。內 p1 a p2 ...