當前位置:首頁 » 密碼管理 » 指針訪問數組元素

指針訪問數組元素

發布時間: 2022-04-30 13:36:17

c語言中用指針和用下標訪問數組元素的本質區別

兩者意思一樣,但是編譯器處理起來不見得一樣。就像樓上的例子a[2]跟*(a+2)是一個意思。但是對於編譯器來說a[2]是一種固定的寫法,因此對於地址偏移什麼的有固定的處理方式,而*(a+2)在語法上應當分解為先算a+2再取值,如果編譯器不優化,完全按照這種定義去編譯的話,那麼就會有先算出a+2這個地址這一步,因此效率要低些。至於編譯優化能不能使兩者一致,那就很難說了。
比如我編了這樣一個程序
int
a[100];
int
b;
int
i,j,k;
for(i=0;i<1000000;i++){
for(j=0;j<100;j++){
for(k=0;k<100;k++){
b=a[0];
}
}
}
和把b=a[0]換成b=*(a)所耗時間一樣。而分別換成b=a[k]和b=*(a+k)後者所耗時間明顯增加很多,前者也有所增加,但比較少。編譯器優化不能用這個語句測試,因為整個會被優化掉。

❷ 「用指針引用數組元素」是什麼意思

就是說通過指針來訪問數組,例如有一個指針int *p和一個數組int a[4][2]。如果p=&a則有*p=a[0][0],*(p+1)=a[0][1],*(p+2)=a[1][0]。。。。指針就是一個地址,操作起來會比數組效率高,但是這也在無形中給使用者增加了難度。

❸ 如果指針指向一個數組,如何隨機訪問其指向的數組元素

舉個例子:
int is[10];
int *pi = is;
訪問數組中元素的三種方法:
is[i];// i<10
pi[i];
*(pi+i);

❹ 如何用數組指針訪問數組中的元素(C++)

數組在內存中的存儲數據就是從array[0]----->array[9]

不會存儲什麼array或者*array

array只是一個數組的名字,它不佔據存儲空間.但是它有值,它的值就是數組的首

地址值.

ptr[2]=array; ptr[2]為int 類型 array為指針 錯

*ptr=array; 相當於ptr[0]=array 錯誤

*ptr[3]=*array; 相當於 array[3]=array[0]; 對.

訪問:

for(i=0;i<10;i++)

{
printf("%d",*ptr++);

}

for(i=0;i<10;i++)

{
printf("%d",ptr[i]);

}

兩個都可以

❺ 指針數組中每個元素的訪問

指向數組的指針
就是數組指針
比如
int a[10];
int (*p)[10];
p=&a;
然後 訪問的時候
(*p)[i];
就是a[i];
一般用來指向二維數組。

❻ 為什麼要使用指針訪問數組元素

實際上就是講述另一種方法 讓你明白指針的用法 其實數組和指針沒有很大區別 比如一個數組a[10],我們可以用a[5]訪問其中的一個數據 同樣int *p=a 一樣可以用p[5]訪問這個數 而且a也可以代表這個數組的首地址 只不過不能增減

❼ C語言中為什麼要使用指針訪問數組元素

用指針有一些好處:可以再指針上直接進行計算
比如加減指針。
另外當數組作為
參數傳遞
到函數中的時候,用指針是很方便的。
其實數組的名字就是一個指針。
有一本經典的書

C專家編程

可以幫助理解這個問題。這種基礎問題是非常重要的。

❽ C語言用指針引用數組元素

(*p)[3]是定義一個指向一維數組的指針,數組元素為三。也就是說p指向的其實是a[0],a[1],a[2]這樣的形式。
p=a;其實就是把第0行的首地址賦值給p.
所以答案C中p[1]即是把第1行的首地址給p,在此基礎上向後移一位,取出地址中的元素數值。 *(p[1]+1)相當於a[1][1].所以是對的。
B的形式是對的,但是它相當於a[2][1],超出界限所以為錯。剩下的兩個格式就不對。

❾ 什麼用指針訪問數組元素求解。

你定義的整形數組,可以用指向整數的指針int *s,也可以用指向數組的指針int (*s)[3];
你的代碼有很多編譯都會出現的錯誤,比如int *s;少了空格和分號。
二維數組初始化也是錯的,你定義之後a[2][3]是取數組中第二組第三個的值。
s=a少了冒號,而且s是不能等於a的,因為你定義的是二維數組所以a相當於指向指針的指針。
用int *s的話應這樣寫s=a[0];
#include <stdio.h>
int main()
{ int a[2][3]={{1,2,3},
{4,5,6}};
int i;
int *s;
s=a[0];
for(i=0;i<6;i++)
printf("%d",s[i]);
return 0;
}
與二維數組接近的還是指向數組的指針int (*s)[3];
這可以寫成s=a;而s[1]就相當於a[1]了
代碼
#include <stdio.h>
int main()
{ int a[2][3]={{1,2,3},
{4,5,6}};
int i,j;
int (*s)[3];
s=a;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf("%d",s[i][j]);
return 0;
}

希望你仔細看書,多看編譯器提示,多練習揣摩數組與指針的聯系。

❿ 怎麼用指針訪問數組元素

#include<stdio.h>

int main()

{ int i,a[10],*p=a;

for(i=0;i<10;i++)

scanf("%d",p+i);

for(i=0;i<10;i++)

printf("%d ",*(p+i));

return 0;

}

熱點內容
plc編程軟體gxdeveloper 發布:2025-05-10 08:43:46 瀏覽:872
沼氣壓縮 發布:2025-05-10 08:38:40 瀏覽:271
阿里雲伺服器centos 發布:2025-05-10 08:37:14 瀏覽:246
安卓手機配什麼收音麥 發布:2025-05-10 08:33:37 瀏覽:373
安卓手機如何邊玩游戲邊視頻 發布:2025-05-10 08:30:27 瀏覽:192
在哪裡觀看登錄密碼 發布:2025-05-10 08:28:50 瀏覽:212
嗶哩嗶哩視頻默認存儲位置 發布:2025-05-10 08:28:48 瀏覽:672
php自帶函數 發布:2025-05-10 08:22:00 瀏覽:201
壬寅年癸卯月如何配置 發布:2025-05-10 08:21:20 瀏覽:586
https網站無法訪問 發布:2025-05-10 08:20:01 瀏覽:788