當前位置:首頁 » 編程語言 » 在c語言指針怎麼互換值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

在c語言指針怎麼互換值

發布時間: 2022-04-30 16:20:39

1. c語言用指針交換兩個數的值

假設pa原本指向內存單元a,
pb原本指向內存單元b,
自然而然,交換之後pa指向內存單元b,
pb指向內存單元a,
那麼pa對應的值就變成了b原來的值,
pb對應的值也就變成了a原來的值,

2. C語言指針使用函數交換兩個變數的值

這個地方會出現不好理解的東西。
調用函數的時候,你放入了int
a
int
b
但是這其實不是你的main函數中的a
b只是相當於他們的副本,也就是復制了一個a
和b
傳入函數
所以你改變的只是傳入的副本
也就是復制的副本a
b所以在main函數中列印的ab不會出現變化
依然是a=3,b=6
現在回答第二個問題,怎麼會讓ab的值變化:傳入指針,也就是在main函數中使用a
b的指針,然後吧指針傳入到函數裡面
這個時候ab就會真正的發生變化,因為指針指向的是ab的物理地址,也就是真正的ab,不是副本,這個時候就會改變ab的值。想要理解,可以去網路傳值參數和引用參數。純手打,望採納

3. 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);
}

4. c語言指針交換兩個變數的值

swap函數,看到temp=*x可知入參是*x和*y,是兩個變數的地址
scanf參數是變數的地址,需要&取地址
p_a表示a的地址指針,因此 &a
輸出就是printf

5. C語言指針實現數據交換

void swap(int *x,int *y) x,y是地址

temp = *x; //temp的值是x地址指向的值

這么理解就明白了。

int a;
int *a2;
a = 5;
a2=&a;
*a2 = 6;
運行到這里a就是等於6,有沒有明白呢。

6. C語言中指針變數值互換問題

先聲明一個臨時變數p
p1,p2是兩個指針,分別指向需要換值的兩個數的地址
*p1是p1地址中數值
先將p1的值保存在臨時的p中,在將p2的值賦給p1地址處
然後再將p的值送回p2中,因為p剛剛被p1賦值,所以p2的值就變成p1的值,達到互換的目的

7. c語言指針交換

這個是這樣的,因為
指針變數
一般就是32位的長度,同樣int類型也是32位的長度,p1裡面的地址也是能放在p裡面存儲的(char
,short類型就不行了)。但是對於
編譯器
來說,存放在p裡面,他就認為是一個整數,所以就不能做一些指針的操作了,比如*p。但是如果只是向你這種只是簡單交換一下值是沒問題的。

8. C語言中,怎麼交換指針數組里的值

程序主要通過冒泡法使用函數strcmp比較兩指針所值字元串大小,通過臨時指針交換兩指針指向,實現字元串排序,代碼如下,
//程序功能,從小到大排序10個字元串
#include <stdio.h>
#include <string.h>
void bubble_sort(char *a[], int n);

int main(int argc, char *argv[])
{
char a[10][20]={0};//存儲10個字元串
char *p[10];//指向10個字元串
int i=0;
for(i=0;i<10;i++)
{
gets(a[i]);//輸入字元串
p[i]=a[i];//指向字元串
}
for(i=0;i<10;i++)
{
puts(a[i]);//輸出原字元串
}
bubble_sort(p,10);
for(i=0;i<10;i++)
{
puts(p[i]);//輸出排序後字元串
}

return 0;
}
//冒泡法排序,從小到大排序
void bubble_sort(char *a[], int n)
{
int i, j;
char *temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(strcmp(a[i],a[i+1])>0)//交換指針
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}

int strcmp( const char *str1, const char *str2 );比較字元串str1、str2,返回值大於0,str1>str2,返回值小於0,str1<str2,返回值等於0,str1==str2。

9. c語言指針值交換小弟求解!!!

因為指針a b是指向指針p q的,所以寫成a b的時候只是單純的指向p q它們所在的地方,而不是指向 i j的地方,也就相當於指針p q換了個位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值並沒有變化。那麼void swap(int *a,int *b)函數對應的swap(p,q);的值是5,3。但是因為:只是p和q交換了位置,自己本身,但是沒有牽扯到它們所指的地址,也就是p還是指i,q還是指j。
所以最後*p,*q這兩個指針所指的值還是3,5。

10. c語言用指針交換兩個數


huan(int
*p1,int
*p2)這個函數中,交換的只是兩個指針的指向,但是函數的結束、返回,這兩個指針本身就消失了(它們的值並不會傳回到main()函數中)所以,最後的結果沒有交換。
如果要起到交換的作用,這個函數應該這樣寫:
void
huan(int
*p1,int
*p2)
{
int
t;
t=*p1;
*p1=*p2;
*p2=t;
}