當前位置:首頁 » 編程語言 » c語言一維數組與指針視頻
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言一維數組與指針視頻

發布時間: 2023-01-29 07:55:35

c語言一維數組和指針的關系時老師講「一維數組名是個指針常量,它存放的是一維數組第一個元素的地址」

首先,你的老師講「一維數組名是個指針常量,它存放的是一維數組第一個元素的地址」,這個有點問題,數組名本身就代表這個數組的第一個元素的地址,不能說「它存放的是一維數組第一個元素的地址」,a有指針的語法,但它並不是指針,它就代表它本身所處的地址,a就是&a[0],這個地址內存放的是a[0],也就是你放進去的1。

至於&a,這個就有點講究了,在早期的c語言標准下,這個是不合法的,但是對一個數組取地址不合法有點說不過去啊,所以後來的c標准(具體哪一年不記得了)就允許對數組取地址,但含義不同了,&a在數值上和a以及&a[0]是相同的,但&a的類型是個int(*)[5],是個一維數組指針,相對於a提升了一級

Ⅱ C語言指針指向一維數組與二維數組

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

C語言中,一維數組的數組名指向了這個數組的起始地址,而指針是它指向的某個東西的地址。例如定義int a[5],訪問第二個元素可以用a[1],也可以用*(a+1)。當一個指針指向某個數組時,數組名和指針的作用應該是一樣的。你定義的這個指針沒有指向任何東西,是個野指針,不能通過類似於數組的方式使用。

Ⅳ 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])了,意思就大錯了!

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

Ⅳ C語言 一維數組 實參與形參與指針的問題

實參是a,它可以作為指針名使用,等同於指向首元a[0]的指針。形參int a[]等價於int *a,它指向實參a數組的首元a[0]的地址。

Ⅵ C語言:一維數組與指針

#include <stdio.h>
#define N 8
int all_sum(int *p, int n)
{
int i, sum=0;
for(i=0;i<N;i++)
{
sum+=*p;
p++;
}
return sum;
}
int average(int sum, int n)
{
return sum/n;
}
int main(void)
{
int i, j, sum, ave, arry[N];
for(i=0; i < N; i++)
{
printf("請輸入第%個d數:", i);
scanf("%d",&arry[i]);
}
sum = all_sum(arry, N);
ave = average(sum, N);
printf("%d %d\n", sum, ave);
return 0;
}

Ⅶ C語言指向一維數組的指針的問題!!!

*(p+n)[i]:
這里p是指向二維數組的首元素的指針。
p+n是指向第n個學生的成績數組的首地址的指針。
(p+n)先跟[i]結合,這是指向第n+i個學生的成績數組的指針。
然後取其內容,就成了第n+i個學生成績數組的第一個成績。

之所以會出錯,是因為結合方式的不同:應該改為(*(p+n))[i],就對了,符合了你的要求,呵呵