當前位置:首頁 » 編程語言 » c語言指針數組指向數組的指針

c語言指針數組指向數組的指針

發布時間: 2022-04-30 15:04:03

c語言中指針數組和數組指針的區別

指針數組的實質是數組,數組中的所有元素都是指針變數,而數組指針的實質則是指針,它指向了數組

㈡ C語言指向數組的指針求解

int **b;表示指針的指針如int x; int *p=&x;int **pp=&p;
int (*p)[5]表示二維數組指針,其用法和一般指針相同,不需要分配內存,只需要指向需要訪問的內存地址即可,如int x[5][5];int (*p)[5]=x;
二維數組和一維數組是等價的,如int a[5][5];和int a[25];是一樣的;a[i][j]<==>a[i*5+j];
int **p 不可以與 int (*p)[5]等價的原因在於int **p無法確定低維上數目(a[i][j]<==>a[i*???+j])如用int *p;訪問二維數組,代碼如下:
#include <stdlib.h>
#include<stdio.h>
int main()
{
int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int c[5][5];
int *b;//=malloc( 5 * sizeof(int *) );
int i,j;
int k=1;
b=(int *)a;
for(j=0;j<25;j++)
{
printf("%d\t",*b+j);
}
return 0;
}

㈢ c語言指針,指向數組的指針、指向指針數組的指針、指向數組的指針的指針,分別如何定義

解答:
1. 如何聲明一個指針,這個指針是指向整個數組的,數組有n個元素,每個元素是int,不是int (*p)[n],而是最簡單的int*p;
2. 如何聲明一個指針,這個指針也是指向數組的,數組有n個元素,每個元素不是int,而是指針int*;這個指針是int**p;
3. 又如何聲明一個指針,它指向另一個指針,這「另一個指針」指向一個數組,數組元素是int;這個指針仍然是int**p。

㈣ C語言指針數組指針怎樣理解

  • 指針數組,指數組元素就是指針

  • 數組指針,對於一維數組來說就是數組名

  • 故對於一維數組來說,數組名是第一個元素的指針,而元素本身也是指針,故數組名是指向指針的指針。

  • 例如:int*p=&a;int**q=&p;

  • 則p中儲存的是整形變數a的地址,而指針p自身也是變數(指針變數通常佔4個位元組),故q中儲存的就是變數p的地址。q就成了指向指針的指針。

㈤ C語言中:數組指針與指針數組有什麼區別

數組指針是指向這個數組首地址的指針,指向對象是這個數組;
指針數組是存放一類指針的數組,這個數組的每個元素都是一個指針;
例子:
int a[10];
int* s;
s = a;//這里s就是一個數組指針,它的值就是數組a 的首地址;當然,如果a是一個整數,那s就是一個指向整型的指針;

int a;
int* s[5];
for(int i=0;i<5;i++)s[i]=a;
//這里s就是一個指針數組,它的每個元素都是整型變數a的地址
應該算比較明白了吧
謝樓上提醒

㈥ C語言中,如何定義一個『指針數組』,這個『指針數組』專門用來存放『數組指針』。

指針數組定義int*p[n];

[]優先順序高,先與p結合成為一個數組,再由int*說明這是一個整型指針數組,它有n個指針類型的數組元素。這里執行p+1時,則p指向下一個數組元素,

這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變數可以用來存放變數地址。但可以這樣*p=a;這里*p表示指針數組第一個元素的值,a的首地址的值。

數組指針定義int(*p)[n];

()優先順序高,首先說明p是一個指針,指向一個整型的一維數組,這個一維數組的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型數據的長度。

如要將二維數組賦給一指針,應這樣賦值:

int a[3][4];

int(*p)[4];//該語句是定義一個數組指針,指向含4個元素的一維數組。

p=a;//將該二維數組的首地址賦給p,也就是a[0]或&a[0][0]

p++;//該語句執行過後,也就是p=p+1;p跨過行a[0][]指向了行a[1][]

(6)c語言指針數組指向數組的指針擴展閱讀:

與數組指針關系

數組指針是指向數組首元素的地址的指針,其本質為指針(這個指針存放的是數組首地址的地址,相當於2級指針,這個指針不可移動);指針數組是數組元素為指針的數組,其本質為數組。

例如:*p[2]是指針數組,實質是一個數組,裡面的兩個元素都是指針,[]的優先順序比*的優先順序高,p先與[]結合,形成數組p[2],有兩個元素的數組,再與*結合,表示此數組是指針類型的,每個數組元素相當於一個指針變數

與二維數組對比

二維數組:如char string_1[10][10]只要定義了一個二維數組,無論賦不賦值,系統都會給他分配相應空間,而且該空間一定是連續的。其每個元素表示一個字元。我們可以通過指定下標對其元素進行修改。

指針數組:如char*str_B[5]系統至少會分配5個連續的空間用來存儲5個元素,表示str_B是一個5個元素的數組,每個元素是一個指向字元型數據的一個指針。

如果我做這樣的定義:

char a[3][8]={"gain","much","strong"};

char*n[3]={"gain","much","strong"};

他們在內存的存儲方式分別如右圖所示,可見,系統給數組a分配了

3×8的空間,而給n分配的空間則取決於具體字元串的長度。

此外,系統分配給a的空間是連續的,而給n分配的空間則不一定連續。

由此可見,相比於比二維字元數組,指針數組有明顯的優點:一是指針數組中每個元素所指的字元串不必限制在相同的字元長度;二是訪問指針數組中的一個元素是用指針間接進行的,效率比下標方式要高。但是二維字元數組卻可以通過下標很方便的修改某一元素的值,而指針數組卻無法這么做。

舉例編輯

數組指針:

#include&lt;stdio.h&gt;

int main()

{

char c[][4]={"哥","哥","我","岸","上","走"};//UTF-8:一個漢字=3個位元組

char(*p)[4];

int i;p=c;//將指針定位於c[0]

for(i=0;i&lt;=5;i++)

{

printf("%s,",*(p+i));//或者將*(p+i)替換成*p++

}

printf(" ");

for(i=5;i&gt;=0;i--)

{

printf("%s,",*(p+i));//或者將*(p+i)替換成*--p

}

return 0;

}

指針數組:

#include&lt;stdio.h&gt;

int main()

{

int i;

char*pch[6]={"妹","妹","你","坐","船","頭"};

for(i=0;i&lt;6;i++){

printf("%s,",pch&lt;i&gt;);

}

printf(" ");

for(i=5;i&gt;=0;i--){

printf("%s ",pch&lt;i&gt;);

}

return 0;

}

㈦ C語言中的指向數組的指針怎麼理解

指針的工作是通過數組在內存的地址來實現的。指向數組的指針。。。有幾種表示的比如p=&a;a是數組名,p是指針;像上面的是表示p是指向a數組首地址的一個指針

熱點內容
解壓專家解壓迅雷雲盤 發布:2025-07-14 09:11:09 瀏覽:910
編程基礎教學 發布:2025-07-14 09:09:48 瀏覽:94
電腦板能進入的手機版伺服器 發布:2025-07-14 09:08:10 瀏覽:555
roblox電腦版伺服器推薦 發布:2025-07-14 09:06:07 瀏覽:807
application緩存 發布:2025-07-14 09:01:56 瀏覽:345
安卓怎麼看綁定地區 發布:2025-07-14 09:01:49 瀏覽:85
籽岷的生存伺服器IP 發布:2025-07-14 08:51:06 瀏覽:419
我的世界搭建tcp伺服器 發布:2025-07-14 08:42:55 瀏覽:659
安卓jj比賽哪個版本有全記牌器 發布:2025-07-14 08:28:27 瀏覽:73
python腳本執行hive 發布:2025-07-14 08:26:24 瀏覽:489