在主函數(shù)中定義
目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、潼關(guān)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
input里面 把這兩個(gè)定義的傳參。
addarrays 里面 同樣傳這兩個(gè)數(shù)組做參數(shù)。
在addarrays里面 循環(huán)累加就好了。
數(shù)組長(zhǎng)度可以用宏定義 。
void fun(int a[],int n)
{
int *p;
int i;
p=a;
for(i=0;in;i++)
*(p+i)+=2;
}
驗(yàn)證:
#include "stdio.h"
void fun(int a[],int n)
{
int *p;
int i;
p=a;
for(i=0;in;i++)
*(p+i)+=2;
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("The original arry a:\n");
for(int i=0;i10;i++)
printf("%d,",a[i]);
printf("\n");
fun(a,10);
printf("The final arry a:\n");
for(i=0;i10;i++)
printf("%d,",a[i]);
}
輸出結(jié)果:
The original arry a:
1,2,3,4,5,6,7,8,9,10
The final arry a:
3,4,5,6,7,8,9,10,11,12
實(shí)現(xiàn)
一、意思不同
*(p+2) 表示先將地址后移兩位,再取地址內(nèi)容。*p+2 表示先取當(dāng)前地址內(nèi)容,然后對(duì)內(nèi)容加2。一個(gè)是對(duì)地址的操作,一個(gè)是對(duì)內(nèi)容的操作,完全不同。
二、用法不同
例如:
有數(shù)組a:
1 2 3 4 5
*p=a;
那么:
*(p+2)=3,*p+2=3
*p就等于1.*(p+X)就是將指針移x的位置。
三、用途不同
1、*p[ ]
在main函數(shù)的參數(shù)中有使用到,其中的 char *argv[]的argv就是一個(gè)指針數(shù)組,用來(lái)存儲(chǔ)函數(shù)調(diào)用時(shí)傳進(jìn)來(lái)可變個(gè)數(shù)的參數(shù)
int main(int argc, char *argv[])
{
something you want to do; ? ?return 0;
}
2、 (*p)[ ]可以作為二維數(shù)組的引用
數(shù)組的下標(biāo)是從0開(kāi)始的,并非從1
因此假設(shè)定義數(shù)組int a[3],那么有效的數(shù)組元素為a[0] a[1] a[2]
樓組的代碼里面的數(shù)組從1開(kāi)始使用,輸入3*3的數(shù)組會(huì)導(dǎo)致越界,踩內(nèi)存發(fā)生錯(cuò)誤
void?fun(int?arr[M][N])
{
int?i,j;
for(i=1;i=M;i++)?//應(yīng)該是for(i=0;iM;i++)
for(j=1;j=N;j++)
scanf("%d",arr[i][j]);
}
其他也按照這個(gè)修改就可以了