赞
踩
#include <stdio.h> void swap(int *px, int *py){ int temp = *px; *px = *py; *py = temp; } int main(void){ int num1, num2; puts("请输入两个整数:"); printf("整数A:"); scanf("%d", &num1); printf("整数B:"); scanf("%d", &num2); swap(&num1, &num2); puts("互换了两数的值。\n"); printf("整数A的值是%d。\n", num1); printf("整数B的值是%d。\n", num2); return 0; }
运行结果:
swap函数中,形参px 和 py 被声明为“指向int型变量的指针变量”。函数被调用时,将&num1 和 &num2复制到 px 和 py中,指针 px 便指向了 num1 ,指针py 便指向了 num2。由于在指针前面加上指针运算符 *,就可以显示该指针指向的对象,因此 *px是num1的别名,*py是num2的别名。
scanf函数与printf函数不同,在使用scanf函数进行读取时,变量名前必须加上一个特殊符号&。
scanf函数的使命是为主调函数中定义的对象保存值。倘若它接收到的纯粹是变量的“值”,是无法进行保存的。因此,scanf函数接收的是指针(具有地址的“值”),由该指针所指对象保存从标准输入读到的值。
swap函数的功能是将两个int型整数进行互换,而传入的却是指向double型变量的指针。
指针px指向了 double 型变量的 num1,但是 int 型的 *px 却不能等同于 double 型变量的 num1。
#include <stdio.h> void swap(int *px, int *py){ int temp = *px; *px = *py; *py = temp; } int main(void){ double num1, num2; puts("请输入两个实数。"); printf("实数A:"); scanf("%lf", &num1); printf("实数B:"); scanf("%lf", &num2); swap(&num1, &num2); puts("互换了两数的值。\n"); printf("整数A的值是%f。\n", num1); printf("整数B的值是%f。\n", num2); return 0; }
运行结果:
因此,编译程序时,会显示警告信息,运行结果中显示的也不是正常的值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。