200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > C语言 数组的指针和指向数组的指针变量-2

C语言 数组的指针和指向数组的指针变量-2

时间:2020-01-14 16:10:42

相关推荐

C语言 数组的指针和指向数组的指针变量-2

一、数组名作为函数参数 如果一个实参的数组,想在函数中改变此数组的元素的值,实参和形参的对应关系可以有4种: (1)实参和形参都是数组名 a 是实参数组首地址,那么ba是形参数组首地址,a和ba共用一段内存,也就是说,在调用changvalue()函数期间,a和ba指的是同一个数组。#include<stdio.h> void changevalue(int ba[]) {ba[3]=27;//这是把内存赋值,所以这个值会被带回 ba[4]=45; return; } int main() {int a[5];//能引用的下标:a[0]-a[4] a[0]=85; a[1]=70; a[2]=98; a[3]=92; a[4]=78; printf("a[0]=%d,a[1]=%d,a[2]=%da[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); changevalue(a); printf("-----------------------------------\n"); printf("a[0]=%d,a[1]=%d,a[2]=%da[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); }(2)实参用数组名,形参用指针变量 #include<stdio.h> void changevalue(int *p) {//注意:这一定要知道数组a的数组元素范围是a[0]-a[4],所以只能引用到*(p+4) *(p+2)=888;//相当于给a[2]赋值。p+2表示a[2]的地址,*(p+2)表示a[2]的值 return; } int main() {int a[5];//能引用的下标:a[0]-a[4] a[0]=85; a[1]=70; a[2]=98; a[3]=92; a[4]=78; printf("a[0]=%d,a[1]=%d,a[2]=%,da[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); changevalue(a); printf("-----------------------------------\n"); printf("a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); }(3)实参和形参都用指针变量#include<stdio.h> void changevalue(int *p) {//注意:这一定要知道数组a的数组元素范围是a[0]-a[4],所以只能引用到*(p+4) *(p+2)=888;//相当于给a[2]赋值。p+2表示a[2]的地址,*(p+2)表示a[2]的值 return; } int main() {int a[5];//能引用的下标:a[0]-a[4] a[0]=85; a[1]=70; a[2]=98; a[3]=92; a[4]=78; printf("a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); int *pa=a; //把数组a的首地址给 pa,然后传递pa过去【数组a的首地址就是a[0]的地址】 changevalue(pa);//实参是指针变量,则该指针变量必须有确定的值 printf("-----------------------------------\n"); printf("a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); }(4)实参为指针和形参为数组名(把指针传递给数组名,那这个数组名就相当于这个数组的首地址) 理解为:把形参数组名也当成指针看待,是一个指向数组a的首地址的指针。#include<stdio.h> void changevalue(int ba[]) {//注意:这里引用下标时,也不能超过main中定义的a数组,可引用的下标是a[0]-a[4] ba[3]=987;//这是把内存赋值,所以这个值会被带回 ba[4]=465; return; } int main() {int a[5];//能引用的下标:a[0]-a[4] a[0]=85; a[1]=70; a[2]=98; a[3]=92; a[4]=78; printf("a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); int *pa=a; //把数组a的首地址给 pa,然后传递pa过去【数组a的首地址就是a[0]的地址】 changevalue(pa);//实参是指针变量,则该指针变量必须有确定的值 printf("-----------------------------------\n"); printf("a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d\n",a[0],a[1],a[2],a[3],a[4]); }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。