void main()
{
int a;
int b;
int c;
scanf_s("%d %d %d", &a,&b,&c);
printf_s("a = %d ,b = %d,c = %d\n\n\n\n", a,b,c);//\n 与\n\n没有区别,更多就有区别
void swap(int* g, int* h);
int* d, * e, * f;
d = &a;
e = &b;
f = &c;
if (a > b) swap(d, e);
if (a > c) swap(d, f);
if (b > c) swap(e, f);
printf_s("3个数由小到大输出为:%d %d %d", a, b, c);
}
void swap(int *g,int *h)
{
int temp;
temp = *g;
*g = *h;
*h = temp;
}
注意1:
1 temp 不能改成*temp
因为*temp是指针变量temp所指向的变量,但temp中无确定的值,因此temp所指向的单元也是不可预见的 2 int *g 和 int *h 不能改成int g 和 int h g h的值可以互相改变了,但不会影响主函数里面的,即“单向传送”的“值传递”方式,形参之的改变不能使实参的值随之改变
3 swap里面,temp改成*temp 、*g 改成g 、*h改成h 也不行
不可能通过调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
4 上述中a为指针变量,*a为a指向的变量
5 想通过函数调用得到n个要改变的值
(1)在主调函数中设n个变量,用n个指针变量指向它们
(2)然后将指针变量作实参,将这n个变量的地址传给所调用的函数的形参
(3)通过形参指针变量,改变该n个变量的值
(4)主调函数中就可以使用这些改变了值的变量
|