1. 在c語言中整形變數的指針能否賦值給整形變數
*p1
這並不是指針。。。而是指針所指向的值,temp=*p1即把這個指針所指向的值賦值給一個臨時變數
都是同一類型;
指針變數的值是指針,指針就是地址;指針變數指向的變數就不是地址了,而是一個具體的變數。
如:int
*ptr;
ptr才是指針,即ptr為指針變數
其實是一個地址,*ptr為指針變數的值,而且指針的類型是int
*
2. C語言關於值傳遞與地址傳遞的問題
編程中,很多東西要你自己去摸索,才能真正的理解。關於地址與值的問題,其實你自己可以試,把變數的地址輸出來看看看是不是一樣,比如 printf("%x",&a); 這樣就是以把變數a的地址用16進制的方式輸出來,看看地址到底是怎麼一回事。
傳值與傳地址可以這樣理解:
就像我把我寫的作文抄了一份給你,你拿去看了之後把有的地方改了,現在我要交作文,而我有一份,所以我直接交了,我交的作文內容並沒有變,這就是傳值,即值傳遞。
同理,如果我把我的作文直接給你,你看了後也把有些地方改了,現在我也要交,你只能還給我,我再交,這時我交的就是被你改過的了,這就是傳地址,即引用傳遞。
這只是我的理解,有誤的地方還請指正。
3. 關於c語言形參實參傳地址傳數值的問題
C語言中函數的參數傳遞(值傳遞,地址傳遞,引用傳遞)
/* ^_^ 2015年11月3日09:58:03 辨析 C語言中函數的參數傳遞*/
//值傳遞 其實質是將數值傳遞給其他倆個變數,自己變數裡面的值並沒有改變----所以說是值傳遞。
# include <stdio.h>
void exchange();
int main (void)
{
int x,y;
x=3;
y=4;
exchange(x,y); //這就是典型的值傳遞,它把X,Y的值傳遞給變a和b;
printf("%d %d\n",x,y); //a,b的值進行交換,但是變數X,Y裡面的值並沒有交換。
return 0;
}
void exchange(int a,int b)
{
int temp;
temp =a;
a=b;
b=temp;
printf("%d %d\n",a,b);
}
//地址傳遞 (提到地址二字,應該始終明確,C語言中的地址是基於指針的,所以地址傳遞是一定會用指針的)
# include <stdio.h>
void exchange();
int main (void)
{
int x,y;
x=3;
y=4;
exchange(&x,&y); //這就是典型的地址傳遞,它把X,Y變數地址傳遞給指針a和b;
printf("%d %d\n",x,y); //*a,*b的值進行交換,就是找到a,b對應的地址交換地址裡面的值,其實也就是
//找到 a,b值進行交換。
return 0;
}
void exchange(int *a,int*b)
{
int temp;
temp =*a;
*a=*b;
*b=temp;
printf("%d %d\n",*a,*b);
}
4. 求C語言中TEMP的用法
temp是一個零時變數。用以num1及num2值的交換用的。
main()
{
int
num1,num2,num3,temp;
//定義num1,num2,num3,temp
4個變數為整形
printf("please
input
three
numbers:");
//輸出
Please
input
three
numbers
scanf("%d,%d,%d",&num1,&num2,&num3);
//讀取用戶輸入的數值,並且依次賦值給num1,num2,num3
if(num1>num2)
//判斷num1是否大於num2,如果成立則執行下列動作
{
temp=num1;
//令temp的值與num1相同
num1=num2;
//令num1的值與num2相同
num2=temp;
//令num2的值與temp相同
}
if(num2>num3)
//判斷num2是否大於num3,若成立則執行下列動作
{
temp=num2;
//令temp的值與num2相同
num2=num3;
//令num2的值與num3相同
num3=temp;
//令num3與temp的值相同
}
if(num1>num2)
//判斷num1是否大於num2,若成立則執行下列語句
{
temp=num1;
//令temp與num1值相同
num1=num2;
//令num1與num2值相同
num2=temp;
//令num2與temp值相同
}
printf("Three
numbers
afer
sorted:%d,%d,%d\n",num1,num2,num3);
//輸出結果
}
也就是說,temp在這段程序裡面僅僅只是起到一個中轉的作用。舉個例子:您有杯子A和杯子B,各自裝滿了不同的溶液,您現在要把杯子A中的溶液與杯子B中的溶液交換,這時您就需要一個空杯子C來做中轉。而這個空杯子就是您程序中的temp。
temp可以命名成不同的。只要您願意。比如,您可以命名成tem。都一樣。
5. 地址可以賦值給地址嗎C語言
可以的
指針類型 就是做這個的
而且 不管是什麼樣的地址 在C語言中 都是一個整型值
所以 地址賦值給整型變數都是可以的。