交换两个整型变量的数值
#include<stdio.h>
#include<conio.h>
main()
{
void swap(int *p1,int *p2);//定義一個函數作用是交換兩個整型變量的數值
int x,y;//定義整型變量x,y
int *a1,*a2;//定義整型指針a1,a2
printf("任意輸入兩個數值:");
scanf("%d,%d",&x,&y);//任意輸入兩個數值賦值到x,y中
a1=&x;
a2=&y;
swap(a1,a2);//交換 a1,a2
printf("%d,%d",*a1,*a2);
getch();
return 0;
}
void swap(int *p1,int *p2)//調用swap交換函數,交換兩個變量的值
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
我認為本題的重點是在于對*p及p的理解。 ?*p是指針,作用是存放變量的地址而p是地址所儲存的內容。 關鍵是子函數調用時交換的應用,注意是變量值的交換不是指針指向問題。
輸出結果 ?任意輸入兩個數值:1,2
? ? ? ? ?2,1
void swap(int *p1,int *p2)
{
int *p;
*p=*p1;//此語句有問題
*p1=*p2;
*p2=*p;
}
*p1就是x,是整型變量。而*p是指針變量p所指向的變量。但p中并無確定的地址值,它的值不可預見。*p所指向的單元也不可預見。
因此對*p賦值可能會破壞系統的正常工作狀況。
void swap(int *p1,int *p2)
{
int *p;
p=p1;
p1=p2;
p2=p;
}
C語言中實參和形參之間的數據傳遞是單向的“值傳遞方式",指針變量作為函數參數也要遵循這個規則。調用函數不可能改變實參指針變量的值,但是可以改變實參指針變量所指變量的值。
?
#include<stdio.h> int comp(int*x,int*y) {if(*x>*y) return *x;elsereturn *y; } int main() {int x,y,*p1,*p2; scanf("%d,%d",&x,&y); p1=&x; p2=&y; printf("max=%d\n",comp(p1,p2)); return 0; }1,2
max=2
--------------------------------
Process exited after 13.7 seconds with return value 0
請按任意鍵繼續. . .
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/xBryant/p/6601576.html
總結
以上是生活随笔為你收集整理的交换两个整型变量的数值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java----IO和NIO的区别
- 下一篇: [置顶] iOs LightBlue与c