當前位置:首頁 » 編程語言 » 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-01-10 14:23:03 瀏覽:472
s盒演算法 發布:2025-01-10 14:16:42 瀏覽:640
c語言用二分法求方程 發布:2025-01-10 14:15:45 瀏覽:218
廣場舞加密 發布:2025-01-10 14:13:21 瀏覽:519
網路密碼顯示低安全性是什麼意思 發布:2025-01-10 14:11:49 瀏覽:780
恥辱2博士保險箱密碼是多少 發布:2025-01-10 14:11:41 瀏覽:98
如何把伺服器搭在自己電腦 發布:2025-01-10 14:10:57 瀏覽:583
水晶可以存儲 發布:2025-01-10 14:09:35 瀏覽:388
一級腳本號 發布:2025-01-10 14:08:06 瀏覽:531
知乎冷數據存儲 發布:2025-01-10 14:07:10 瀏覽:603