void swap1(int c0[],int c1[]) { int t; t=c0[0];c0[0]=c1[0];c1[0]=t; } void swap2(int *c0,int *c1) {void swap1(int c0[],int c1[]){ int t;t=c0[0];c0[0]=c1[0];c1[0]=t;}void swap2(int *c0,int *c1){int t;t=*c0;*c0=*c1;*c1=t;}void main(){int a[2]={3,5},b[

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 19:28:33
void swap1(int c0[],int c1[]) { int t; t=c0[0];c0[0]=c1[0];c1[0]=t; } void swap2(int *c0,int *c1) {void swap1(int c0[],int c1[]){ int  t;t=c0[0];c0[0]=c1[0];c1[0]=t;}void swap2(int *c0,int *c1){int t;t=*c0;*c0=*c1;*c1=t;}void main(){int a[2]={3,5},b[

void swap1(int c0[],int c1[]) { int t; t=c0[0];c0[0]=c1[0];c1[0]=t; } void swap2(int *c0,int *c1) {void swap1(int c0[],int c1[]){ int t;t=c0[0];c0[0]=c1[0];c1[0]=t;}void swap2(int *c0,int *c1){int t;t=*c0;*c0=*c1;*c1=t;}void main(){int a[2]={3,5},b[
void swap1(int c0[],int c1[]) { int t; t=c0[0];c0[0]=c1[0];c1[0]=t; } void swap2(int *c0,int *c1) {
void swap1(int c0[],int c1[])
{ int t;
t=c0[0];c0[0]=c1[0];c1[0]=t;
}
void swap2(int *c0,int *c1)
{int t;
t=*c0;*c0=*c1;*c1=t;
}
void main()
{int a[2]={3,5},b[2]={3,5};
swap1(a,a-1);swap2(&b[0],&b[1]);
printf("%d %d %d\n",a[0],a[1],b[0],b[1]);
}
求输出结果,详细解及思路

void swap1(int c0[],int c1[]) { int t; t=c0[0];c0[0]=c1[0];c1[0]=t; } void swap2(int *c0,int *c1) {void swap1(int c0[],int c1[]){ int t;t=c0[0];c0[0]=c1[0];c1[0]=t;}void swap2(int *c0,int *c1){int t;t=*c0;*c0=*c1;*c1=t;}void main(){int a[2]={3,5},b[
首先 数组名是个地址 & 取地址符
存储在内存中是用栈的方式 一个数组
比如说你 只定义a[2],b[2]两个数组
数据 b[0] b[1] a[0] a[1]
地址 N+1 N+2 N+3 N+4
地址名 b b+1 a a+1
回到题目
void swap1(int c0[],int c1[]) 参数是数组 a a-1 (数组名就是地址)
(注意 a-1 和 b+1 是同一个地址)
数据 3 5 3 5
地址名 a-2 a-1 a a+1
b b+1 b+2 b+3
a[0] 与 (a-1)[0] 交换
变成
数据 3 3 5 5
地址名 a-2 a-1 a a+1
b b+1 b+2 b+3
别以为 名字只有a 就不关 b 什么事了
a[0] 与 (a-1)[0] 交换的意思是 a[0] 与 b[1] 交换
void swap2(int *c0,int *c1) 参数为 地址
数据 3 3
地址 &b[0] &b[1]
b[0] 与 b[1] 交换 还是 3 3 可以换个数据实验
这个程序的可以形象的认为 四个数 a b x y (a[0],a[1],b[0],b[1])
a与y换位 y b x a 再 x 与 a 换位 y b a x