❶ c語言中用指針交換數據
#include<stdio.h>
voidswap1(inta1,intb1)
{
inttemp1;
temp1=a1;
a1=b1;
b1=temp1;
}
voidswap2(int*a2,int*b2)
{
inttemp2;
temp2=*a2;
*a2=*b2;
*b2=temp2;
}
voidmain()
{
inta=1949,b=2008;
printf("變數a,b的初始值分別為:a=%d,b=%d ",a,b);
swap1(a,b);
printf("不是用地址傳遞後產生交換無變化:a=%d,b=%d ",a,b);
swap2(&a,&b);
printf("用地址傳遞後產生正確的交換:a=%d,b=%d ",a,b);
}
❷ c語言指針變數值交換
你只是a和b換個值,幹嘛要用指針,用temp就行了。你定義的兩個指針也沒用上啊,而且a和b換值,最好的做法是
a=a^b
b=a^b
a=a^b
如果我沒記錯的話就是這樣子,利用異或最省計算資源了。
❸ C語言中如何交換兩個指針變數的的值
1、首先,就是最基本的知識,寫頭文件、函數聲明、定義變數。
❹ c語言用指針交換兩個數
C語言不能企圖改變指針形參而使指針實參也發生變化,p1和p2是兩個指針變數,他們的交換不能影響實參。正確的是在函數內定義int t,然後去掉下面變數t前面的*,在p1和p2前加*。
❺ c語言用指針交換兩個數的值
假設pa原本指向內存單元a,
pb原本指向內存單元b,
自然而然,交換之後pa指向內存單元b,
pb指向內存單元a,
那麼pa對應的值就變成了b原來的值,
pb對應的值也就變成了a原來的值,
❻ c語言 指針交換兩個字元串
長度不同,兩者存放單元的個數應當都大於 最長的字元串,否則交換以後 存不下,會出錯。
#include <stdio.h>
#include <stdlib.h>
void jh(char *p1, char *p2){
char *t;
int i,L;
L = strlen(p1);
if (strlen(p2) > L) L = strlen(p2);
t = (char *) malloc(sizeof(char) * L);
strcpy(t,p1);strcpy(p1,p2);strcpy(p2,t); // 交換
}
main(){
char s1[100]="abc", s2[100]="1234567"; // 實際允許存放量必需足夠大
printf("%s %s \n",s1,s2);
jh(s1,s2);
printf("%s %s \n",s1,s2);
return 0;
}
❼ c語言的指針交換問題
//C語言的參數傳遞方式是傳值。第二個改為:
#include<stdio.h>
void swap(int *a,int *b) //交換a,b的值,不起任何作用。應該交換a,b所指對象的值。
{
int t;
t=*a;*a=*b;*b=t;
}
main()
{
int i,j,*p=&i,*q=&j;
printf("please input i and j:\n");
scanf("%d%d",&i,&j);
swap(p,q);
printf("%d %d\n",*p,*q);
}
❽ C語言用指針法交換兩個數的順序問題
解答:
1. 注意形式參數和實際參數的區別,主函數中的x,y是實際參數,swap函數中的a,b是形式參數。他們各有自己的存儲空間,互不幹擾。
2. 在程序適當位置加上輸出地址的語句,即可看出為什麼回到主程序後,x,y的值為什麼不交換。
❾ c語言中怎麼用指針調換順序
要調換三個數的順序,用排列組合原理簡單的計算總共有6種方法,不知道樓主是想按其中某種方法交換變數的具體數值,還是將所有6種排序都列印出來?
例如,a=1,b=2,c=3,交換後結果為:a=3,b=1,c=2.
首先需要兩個中間變數作為交換的媒介。程序如下
:
main()
{
int
a=1,b=2,c=3;
int
*x=a,*y=b,*z=c;/*定義3個指針變數,並分別賦予初值為a,b,c的地址。*/
int
*p=null,*s=null;/*x為交換中介指針變數,初始化為空*/
*p=*x;
*s=*y;
*x=*z;
*y=*p;
*z=*s;
printf("%d
%d
%d",a,b,c);
getch();
}
其實交換數不需要用到指針,直接運用變數本身也可交換。當然指針交換的好處在於函數內部可以實際交換兩個數的值。
❿ C語言用指針交換數值
#include
<stdio.h>//幫你改了幾個地方
int
fun(int
*a,int
*b)
{
int
*t;
t=a;//注意*t表示指針所指向的值,t表示地址
a=b;
b=t;
printf("%d\t%d\t",*a,*b);
return
0;
}
void
main()
{
int
c=1,d=2,*a=&c,*b=&d;//你這里的賦值要給指針地址,加上個&
fun(a,b);
printf("%d\t%d\t",*a,*b);
}