假如有个题是考察实参值改不改变的,怎么比较快的判断它改不改变呢?
例如
以下程序的输出结果是【11】。
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d\n",*p,*q);
答案是3 5
假如有个题是考察实参值改不改变的,怎么比较快的判断它改不改变呢?
例如
以下程序的输出结果是【11】。
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d\n",*p,*q);
答案是3 5
怎么全都答了那么复杂。楼主请看: t=p;p=q;q=t;
只表示存放地址的变量中存放的地址交换了,与i和j有什么关系呢?
若是:*t=*p;*p=*q;*q=*t; 这就表示地址内容改变了
的确不会变。。理由同一楼。。。
会改变!如果用指针和数组就可以改变其值,因为传递的是地址,是双向的!用常量的话就是单向值传递,不会改变!