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

c語言一維數組指針

發布時間: 2022-02-25 18:29:02

1. c語言一維數組指針調用

這個大概也只能用來做理論研究了,實際編程過程中不可能這么寫,
int a[10] ; a[i]
int *p ,p=a; p[i]
這兩個應該好理解
注意,一旦聲明int a[10]
那麼a就是一個地址常量了,他是數組a在計算機內存中的首地址

a+2就相當於&a[2]
把他當成一個數組(假設為b)的起始地址的話
(&a[2])[5]也就是一個數組的元素,b[5]
而他對應的原來的a數組元素就是a[7]
看圖:
地址:

&a[0] &a[1] &a[2] &a[3] ... &a[9]

a a+1 a+2 a+3 ... a+9
&b[0] &b[1] ... &b[7]
b b+1 ... b+7
元素 a[0] a[1] a[2] a[3] ... a[9]
b[0] b[1] .. b[7]
另外這個
(&a[i])[j] =>a[i+j]
就相應的推出來了
實際上就是要注意
a,a[0],&a[0]三者之間的關系

a是數組的首址,也就是第一個元素的地址,也就是&a[0]
而a[0]就是一個元素

2. C語言關於指向一維數組的指針

變數的值可以改變,常量的值無法改變。
字元串"ab"在程序中為常量,不可改變。
想要改變字元串中元素順序,可給指針p分配一段空間,再賦值即可。

3. 寫程序(C語言),使用指針實現列印一維數組所有元素的操作。

#include<stdio.h>

voidmain()

{

inta[100],*p;

intn,t;/*你所要輸入數字的個數*/

p=a;

printf("pleaseinputnumbern:");

scanf("%d",&n);

t=n;

while(n--)scanf("%d",p++);/*以此輸入要輸入的數字*/

p=p-t;

for(inti=0;i<t;i++)

{

if(i%4==0)printf(" ");

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

}

printf(" ");

}

運行結果見附圖

4. c語言一維數組,指針,動態存儲分配

#include<stdio.h>
#include<string.h>
intmain()
{intn,i,*p;
scanf("%d",&n);
p=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{*(p+i)=i+1;
printf("%d",p[i]);
}
return0;
}

5. C語言中一維數組和指針有什麼區別

指針都沒初始化,運行個毛啊。

應該這樣:

6. c語言一維數組指針問題

數組明代表的是改數組的首地址,nums就是第一個元素的的值,nums+1就是第二個元素的值了

7. 請問C語言里一維數組能用數組指針嗎如果可以怎麼用呢

數組指針可以指向一維數組的。
指針本來就是變數,是用來存放地址的變數。
如:
int (*a)[3],b[12];
a=b;
a++;
之後,*a相當於a[3]

8. C語言:一維數組與指針

#include<stdio.h>
main()
{
int n,i,a[100],*p,s=0;
float aver;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
p=a;
for(i=0;i<n;i++)
s=s+*p++;
aver=1.0*s/n;
printf("和為:%d,平均數為:%.1f\n",s,aver);

}

9. C語言編程,題目1:定義一個一維數組,用指針引用的方法對該數組各元素賦值,然後輸出該數組。【未完】

題目1
void main()
{
int i;
char a[3];
*a=1;
*(a+1)=2;
*(a+2)=3;
for(i=0;i<3;i++)
{
printf("%d.\n",a[i]);
}
return;
}
題目二
#include<stdio.h>
void main()
{
int i,j;
int A[3][4]=
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (*p)[4]=A;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d.\n",*(*(p+i)+j));
}
}
return;
}

10. C語言一維數組指針

  • p=&a;才是=號兩邊類型匹配。因為p被聲明為指向有4個元素的一維整型數組的指針,而a被定義為一個整型數組的第一個元素的指針,所以寫成p=a;等號兩邊類型不匹配,連編譯都過不了。而&a就是一個有4個整型元素的一維數組的指針——就是說在int a[4]={1,3,5,7};的定義後,a是1的地址,a+1就2的地址;而&a的值雖與a相同,但&a是整個數組{1,3,5,7}的地址,&a+1就指向7後面的那個單元了。而int (*p)[4];這種聲明恰好就是&a的意思,即p是個指針,指向一個4元素整型數組,也就是p+1就要跳過4個int元素所佔有的空間。

  • printf("%d ",(*p)[3]);中的(*p)[3]的意思是這樣的:有了p=&a;後,p的地址「值」就是1的地址「值」,但意思是緊挨著存放的1,3,5,7這4個int數的首地址,*p後就是第一個元素1的地址了,那麼(*p)[3]就向後移動3個元素位置,應該是7了……這里把*p用()括起來是因為[]的優先順序比*高,不括起來就被解釋成*(p[3])了,意思就大錯了!

  • 這里涉及的指針操作表述起來有些「繞」,得慢慢體會……

熱點內容
php日誌查看 發布:2025-07-12 16:12:10 瀏覽:212
ftp目錄映射為本地盤符 發布:2025-07-12 16:06:59 瀏覽:642
nas存儲百科 發布:2025-07-12 16:03:17 瀏覽:123
python的sort函數 發布:2025-07-12 15:53:21 瀏覽:48
ensp伺服器怎麼設置web根目錄 發布:2025-07-12 15:47:56 瀏覽:283
安卓怎麼設置二卡發信息 發布:2025-07-12 15:43:50 瀏覽:742
如何看到無線密碼 發布:2025-07-12 15:43:13 瀏覽:674
好網址可緩存 發布:2025-07-12 15:36:07 瀏覽:251
centos安裝php52 發布:2025-07-12 15:14:19 瀏覽:298
usb介面編程 發布:2025-07-12 15:14:19 瀏覽:215