其实我一直都不理解这个指针的意思,要通俗易懂.
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/10/06 11:22:21
其实我一直都不理解这个指针的意思,要通俗易懂.
#include
int main()
{
\x05void swap(int ,int );
\x05int a,b;
\x05int *p1,*p2;
\x05scanf("%d%d",&a,&b);
\x05p1=&a;
\x05p2=&b;
\x05swap(p1,p2);
\x05printf("%d %d\n",a,b);
\x05return 0;
}
void swap(int *x,int *y)
{
\x05int *temp;
\x05{
\x05\x05temp=*x;
\x05\x05*x=*y;
\x05\x05*y=temp;
\x05}
}
#include
int main()
{
\x05void swap(int ,int );
\x05int a,b;
\x05int *p1,*p2;
\x05scanf("%d%d",&a,&b);
\x05p1=&a;
\x05p2=&b;
\x05swap(p1,p2);
\x05printf("%d %d\n",a,b);
\x05return 0;
}
void swap(int *x,int *y)
{
\x05int *temp;
\x05{
\x05\x05temp=*x;
\x05\x05*x=*y;
\x05\x05*y=temp;
\x05}
}
在main里首先输入两个int到a和b
然后两个指针p1和p2分别指向a和b的地址.
传入swap后,两个指针x和y分别指向a和b
*x就是”x指向的那个int“
*y就是“y指向的那个int”.
于是在swap中,先把*x,也就是a的值复制一份到temp
然后把*y,也就是b的值复制到*x,也就是a那里.此时*x,也就是a,其原来的值被覆盖了(不过没关系,已经在temp备份了).
最后将temp的值(也就是原来a的值)赋值到*y,也就是b那里.
从而实现了a和b的交换.
你可以将指针看作是“门牌号码”,而变量看做是“房子”,变量的值看做“房子里的人”.这样会比较容易理解.
再问: 你好,其他的我都懂就是这里我不懂p1=&a; p2=&b; swap(p1,p2); 交换的到底是p1p2还是p1p2所指向的地址,还是&a&b?
再答: 交换的是p1和p2所指向的地址的值。p1的值和p2的值都没变。另外,p1等于&a,p2等于&b,所以也可以说交换的是a和b的值。可以看成:a和b是两个房子,p1保存了房子a的门牌号码,p2保存了房子b的门牌号码,然后程序把这两个门牌号码告诉给函数swap。注意,这里只是“告诉门牌号码”,也就是swap去拿门牌号码干任何事情,顶多影响两个房子里的内容,但p1还是保存了房子a的门牌号码,但p2还是保存了房子b的门牌号码,这个是不会被swap改变的。实际上,swap在得到两个门牌号码后立刻抄录了一份,在swap内部,x和y分别保存了房子a和房子b的门牌号码。x和y就是形式参数(形参),p1和p2是实际参数(实参)。直到swap的最后,x和y都没有变化,一直是x保存了房子a的门牌号码,y保存了房子b的门牌号码。
swap的指令其实是:void swap(int *x,int *y)
{
int *temp; // 安排一个临时房子temp,这里正确代码是int temp,没有星号。有星号的是指针,指针只是一个空洞的门牌号码,一串数字而已,而不是实际的房子,放不了人的。
{
temp=*x; // 克隆一个门牌号码x所指的房子里的人,走到temp房子里
*x=*y; // 克隆一个门牌号码y所指的房子里的人,走到门牌号码x所指向的房子里
*y=temp; // 让刚才在temp房子里的来自门牌号码x所指向房子的克隆人走到门牌号码y所指的房子里。
}
}
然后两个指针p1和p2分别指向a和b的地址.
传入swap后,两个指针x和y分别指向a和b
*x就是”x指向的那个int“
*y就是“y指向的那个int”.
于是在swap中,先把*x,也就是a的值复制一份到temp
然后把*y,也就是b的值复制到*x,也就是a那里.此时*x,也就是a,其原来的值被覆盖了(不过没关系,已经在temp备份了).
最后将temp的值(也就是原来a的值)赋值到*y,也就是b那里.
从而实现了a和b的交换.
你可以将指针看作是“门牌号码”,而变量看做是“房子”,变量的值看做“房子里的人”.这样会比较容易理解.
再问: 你好,其他的我都懂就是这里我不懂p1=&a; p2=&b; swap(p1,p2); 交换的到底是p1p2还是p1p2所指向的地址,还是&a&b?
再答: 交换的是p1和p2所指向的地址的值。p1的值和p2的值都没变。另外,p1等于&a,p2等于&b,所以也可以说交换的是a和b的值。可以看成:a和b是两个房子,p1保存了房子a的门牌号码,p2保存了房子b的门牌号码,然后程序把这两个门牌号码告诉给函数swap。注意,这里只是“告诉门牌号码”,也就是swap去拿门牌号码干任何事情,顶多影响两个房子里的内容,但p1还是保存了房子a的门牌号码,但p2还是保存了房子b的门牌号码,这个是不会被swap改变的。实际上,swap在得到两个门牌号码后立刻抄录了一份,在swap内部,x和y分别保存了房子a和房子b的门牌号码。x和y就是形式参数(形参),p1和p2是实际参数(实参)。直到swap的最后,x和y都没有变化,一直是x保存了房子a的门牌号码,y保存了房子b的门牌号码。
swap的指令其实是:void swap(int *x,int *y)
{
int *temp; // 安排一个临时房子temp,这里正确代码是int temp,没有星号。有星号的是指针,指针只是一个空洞的门牌号码,一串数字而已,而不是实际的房子,放不了人的。
{
temp=*x; // 克隆一个门牌号码x所指的房子里的人,走到temp房子里
*x=*y; // 克隆一个门牌号码y所指的房子里的人,走到门牌号码x所指向的房子里
*y=temp; // 让刚才在temp房子里的来自门牌号码x所指向房子的克隆人走到门牌号码y所指的房子里。
}
}
“爱”这个词语是什么意思,我为什么一直都不理解?
我要的现在就要我一直不理解这句话的意思求解释
"其实我一直都很孤单"的英文怎么说?
以其实我一直都懂你为题的作文
不理解这个英语的意思!
其实,我一直都在.英语怎么说...
我一直听见一个单词 我本以为是automaticly 其实就是这个意思 但是为什么老外都读“欧踢米利” 而不是“欧踢买踢
英语翻译其实我一直都在你身边,直要你转身,我就在这里!其实我一直打听你的消息,直要你有难!我就会帮你!其实.
帮我讲讲静水速度,还有顺流时间,逆流时间等的意思与计算方法 我一直不理解
我一直都在,其实我们只有一个转身的距离 的英文怎么说
其实我一直都懂你 用英语怎么说
其实我一直都很想你 用英语怎么说