#include <stdio.h>
#include <stdlib.h>
void changevalue(int ba[]){
ba[3] = 27; //这是把内存赋值 所以这个值会被带回到调用者
ba[4] = 45;
return;
}
void changevalue2(int *p){
//一定得知道a的范围是a[0]-a[4] 这意味着你最多引用到*(p+4)
*(p+2) = 888;//改变a[2]的值 给a[2]赋值
return;
}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
//数组名作为函数参数
//如果一个实参的数组 想在函数中改变数组的值
//实参和形参对应的是可以有四种
//1)实参和形参都是数组名
// int a[5]; //能引用的下标a[0] - a[4]
// a[0] = 85;
// a[1] = 70;
// a[2] = 98;
// a[3] = 92;
// a[4] = 78;
// printf("a[3]=%d,a[4]=%d\n",a[3],a[4]);
// changevalue(a);//此时共用同一段内存地址,他们就是同一个数组
// printf("a[3]=%d,a[4]=%d\n",a[3],a[4]);
//2)加入指针变量
// int a[5]; //能引用的下标a[0] - a[4]
// a[0] = 85;
// a[1] = 70;
// a[2] = 98;
// a[3] = 92;
// a[4] = 78;
// printf("a[2]=%d,a[4]=%d\n",a[2],a[4]);
// changevalue2(a);//此时共用同一段内存地址,他们就是同一个数组
// printf("a[2]=%d,a[4]=%d\n",a[2],a[4]);
//实参和形参都用指针变量
// int a[5]; //能引用的下标a[0] - a[4]
// a[0] = 85;
// a[1] = 70;
// a[2] = 98;
// a[3] = 92;
// a[4] = 78;
// printf("a[2]=%d,a[4]=%d\n",a[2],a[4]);
// int *pa = a; //把数组a的首地址给pa,然后传递pa过去
// //实参是指针变量,该指针变量必须有确定的值;
// changevalue2(pa);
// printf("a[2]=%d,a[4]=%d\n",a[2],a[4]);
//实参为指针 形参为数组名
//其实就是把形参数组也当成指针看待,是一个指向数组a的首地址的指针
int a[5]; //能引用的下标a[0] - a[4]
a[0] = 85;
a[1] = 70;
a[2] = 98;
a[3] = 92;
a[4] = 78;
printf("a[3]=%d,a[4]=%d\n",a[3],a[4]);
int *pa = a;
changevalue(pa);
printf("a[3]=%d,a[4]=%d\n",a[3],a[4]);
}
C语言指针之数组指针作为参数
最新推荐文章于 2024-08-13 21:27:16 发布