如下程序的运行结果为什么是3 5 为什么运行结果是3

作者&投稿:诺静 (若有异议请与网页底部的电邮联系)
想要交换两个整数的值,需要指针为形参传整数的地址。
当你要交换两个指针的值时,当然要用指向指针的指针(即二级指针)才能交换成功。
希望你能理解,有问题可以Hi我。

以下程序修改完毕,结果5 3

#include<stdio.h>
void swap(int **a,int **b)
{
int *t;
t=*a;
*a=*b;
*b=t;
}
void main()
{int i=3,j=5,*p=&i,*q=&j;
swap(&p,&q);
printf("%d %d\n",*p,*q);
}

这个程序的运行结果为什么是3,,5,3,5啊?~

#include
void fun(int *a,int *b)
{
int *c;
c=a;a=b;b=c;//仅仅是指针交换,重新指向另一个位置.但数值没变
printf("fun:%d,%d
",*a,*b);//增加一条语句,函数里面的确交换成功.但是,函数结束后,里面变量消失,没有实际影响原地址数值变化。
}
void main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);
printf("%d,%d
",*p,*q);
fun(&x,&y);
printf("%d,%d
",*p,*q);

}

switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 系统才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,系统将继续执行下一个 case 中的语句段。
通俗易懂的来说,就是你的程序里面每个case最后没有break,跳出当前循环。少了这个跳出动作,那么这个switch循环将从case 4开始+1,case 5也+1,default也+1,那么结果当然是3了。