数组与指针 ·用数组名作为函数的参数 1如果是自定义函数中是使用的数组作 为函数的参数,则实参向函数中传递的 是数组的首地值,那意味着对形参的改 变就会影响到实参的改变 2如果自定义函数中是使用的普通变量 作为函数的参数,则实参向函数中传递 的仅仅是实参的值,那么意味着形参值 的改变将不会对实参的值造成影响
数组与指针 • 用数组名作为函数的参数 1.如果是自定义函数中是使用的数组作 为函数的参数,则实参向函数中传递的 是数组的首地值,那意味着对形参的改 变就会影响到实参的改变 2.如果自定义函数中是使用的普通变量 作为函数的参数,则实参向函数中传递 的仅仅是实参的值,那么意味着形参值 的改变将不会对实参的值造成影响
数组与指针(程序一) #include ●# include ●# define n10 void swaparr(int array l [l, int number) e void swapval (int x, int y) void input(int array l [, int number) e void input(int array l[, int number int*p; p=array l printf("please input %d numbersIn" N)
数组与指针(程序一) #include #include #define N 10 void swaparr(int array1[],int number); void swapval(int x,int y); void input(int array1[],int number); void input(int array1[],int number) { int *p; p=array1; printf("please input %d numbers\n",N);
数组与指针(程序一) for( p<array 1+number p++) scanf("%od"p) void swaparr(int array l[l, int number) Int 1, temp if(number%02)==0) for(i=0; i<=(number-2)/2; 1++)
数组与指针(程序一) for(;p<array1+number;p++) { scanf("%d",p); } } void swaparr(int array1[],int number) { int i,temp; if((number%2)==0) { for(i=0;i<=(number-2)/2;i++)
数组与指针(程序一) temp=array arrayli=array lnumber-1-1 array lnumber-1-ilFtemp f(number%2)=0) for(i=0; i<(number-1)/2; 1++) temp=array l1 array[i=array [number-1-1
数组与指针(程序一) { temp=array1[i]; array1[i]=array1[number-1-i]; array1[number-1-i]=temp; } } if((number%2)!=0) { for(i=0;i<(number-1)/2;i++) { temp=array1[i]; array1[i]=array1[number-1-i];
数组与指针(程序一) array[N-1-i]=temp 1)1 e void swapval(int x,int y) Int temp temp=X X-y y=temp
数组与指针(程序一) array1[N-1-i]=temp; } } } void swapval(int x,int y) { int temp; temp=x; x=y; y=temp; }
数组与指针(程序一) main( e int arrayN,p, xl,y=2; p-array nput(p, N) lr printi("交换前数组中的值:mn"); for(p=array p<array+N; p++) printf(%3d,*p) printf("n;
数组与指针(程序一) main() { int array[N],*p,x=1,y=2; p=array; input(p,N); printf("交换前数组中的值:\n"); for(p=array;p<array+N;p++) { printf("%3d",*p); } printf("\n");
=数组与指针(程序一) p=aray,∥上面的循环已经将指针指向了别的元素,而 非第一个元素 swaparr(p, N) p=aray;∥'上面的循环已经将指针指向了别的元素, 而非第一个元素 print("交换后数组中的值:in"); for(p=array; p<array+N; p++) printf( %3d"*p) printf("n printi("交换前xy中的值:in")
数组与指针(程序一) p=array; //上面的循环已经将指针指向了别的元素,而 非第一个元素 swaparr(p,N); p=array; //上面的循环已经将指针指向了别的元素, 而非第一个元素 printf("交换后数组中的值:\n"); for(p=array;p<array+N;p++) { printf("%3d",*p); } printf("\n"); printf("交换前x,y中的值:\n");
数组与指针(程序一) printf( %03d, %03d,y); rin ntf("n") swapval(ⅹ2y) printi"交换后xy中的值:in"); printf(%03d, %"x,y) printf("n); system (pause) 预测上述程序的输出结果
数组与指针(程序一) printf("%3d,%3d",x,y); printf("\n"); swapval(x,y); printf("交换后x,y中的值:\n"); printf("%3d,%3d",x,y); printf("\n"); system("pause"); } 预测上述程序的输出结果
数组与指针 上述程序中应注意的问题: 1如果用户自定义函数中的形参是数 组,则实参中可以添数组名,也可以填 个指针变量,该指针变量指向数组的 首地址 例如: Int array[0]*p; p-=array, swaparr(p, 10) 等价于: swaparr(array,10)
数组与指针 • 上述程序中应注意的问题: 1.如果用户自定义函数中的形参是数 组,则实参中可以添数组名,也可以填 一个指针变量,该指针变量指向数组的 首地址 例如:int array[10],*p; p=array; swaparr(p,10); 等价于: swaparr(array,10);
数组与指针 2.在每次使用指针的时候一定要将指针 复位,也就是重新将指针指向数组的首 地址,程序中多次对指针进行复位 例如: Int array[10J*p; p-array, input(p, 10) p-=array, swaparr(p, 10)
数组与指针 2.在每次使用指针的时候一定要将指针 复位,也就是重新将指针指向数组的首 地址,程序中多次对指针进行复位 例如:int array[10],*p; p=array; input(p,10); p=array; swaparr(p,10);