你的p、q的指針是使用的是x、y的地址,而x和y的地址是不可能改的,你覺的q和p的地址能改嗎?
創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網營銷推廣、網站重做改版、長春網站定制設計、自適應品牌網站建設、H5頁面制作、成都做商城網站、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為長春等各大城市提供網站開發(fā)制作服務。
而你在fun里的a和b是兩個局部變量,他只是內存地址改了,而沒有改變x和y的地址和他所在內存的內容。
p函數(shù)就是個冒泡遞減排序功能。標準函數(shù)頭寫法應該是void p(int a[])而不是void p(int a[5]),即使寫成void p(int a[5]),編譯器也是按void p(int a[])解釋而不按void p(int a[5])解釋,而且這里a[]的意思就是定義a是int *型指針。函數(shù)p中并沒有改變a,改變的是a指向的目標a[0]~a[4]。所以不知你問的具體是啥意思……
實參的值傳給了形參,形參可以看著是被調函數(shù)中的局部變量被調函數(shù)可有返回值也可以沒有有返回值用return返回。例如int fun(int a,int b){ int c; c=a+b; return c;}主函數(shù)調用:int a,b,c;a=1,b=2;c=fun(a,b);沒有返回值的函數(shù)通常形參都是指針變量,那樣可以直接改變變量的值,例如fun(int *a){ *a=5;}主函數(shù)調用int b=1;fun(b);這里調用fun后,b的值就變?yōu)?了而如果你的函數(shù)是fun(int a)這樣b的值是不會變化的,這要你去理解指針
1、多文件之間,一般很少有單個參數(shù)傳遞,那個交集太大,不容易移植,各個文件之間最好是越獨立越好。
2、數(shù)據(jù)傳遞,一般是通過函數(shù)接口來實現(xiàn)的。就是用另一個C文件中的某一個功能的時候,可以通過include它的頭文件,然后直接調用它的接口函數(shù),這樣目的就達到了,這樣實現(xiàn)的好處就是易于移植。
定義變量的時候,直接等于一個函數(shù)返回值即可。
一、在C語言中,定義變量同時,給變量賦值,稱為初始化。
二、初始化形式為
TYPE var_name = INIT_VALUE;
其中TYPE為變量類型, var_name為變量名, INIT_VALUE為初始值。
三、要用函數(shù)返回值作為初始化,那么只需要把函數(shù)調用寫在INIT_VALUE區(qū)域即可。 示例代碼如
#include?stdio.h#include?time.hint?main(){????int?cur_time?=?time(NULL);//以time函數(shù)返回值作為cur_time的初始化值。????printf("當前POSIX標準時間為:%d\n",cur_time);//使用cur_time.????return?0;}
不對,在C語言中,傳值有地址傳值和參數(shù)傳值,參數(shù)傳值只能將實參傳值給形參,所以A選項正確。C語言中的外部變量是可以在函數(shù)之間傳遞數(shù)據(jù)的。
C語言中的自動變量是默認的變量,實際上是函數(shù)中的局部變量,所以D選項正確。全局變量一經定義都是需要分配內存單元,在程序運行過程中自始至終都會占用固定的空間,在未知內存情況下,最好不要使用全局變量。
函數(shù)調用時,值可以雙向傳遞,并沒有限制使用全局變量還是局部變量,需要根據(jù)程序的邏輯需要進行選擇。
擴展資料
C語言參數(shù)傳遞:
1、值傳遞
參數(shù)傳遞只把變量a的值傳遞給了變量p,此時變量a與變量p是值相同的兩個不同變量,在內存不同的兩個地址中,所以對變量p賦值只是修改了變量p的值,并不能修改變量a的值??偨Y一句話就是:值傳遞不傳遞變量本身,只傳遞變量的值。
2、引用傳遞
與值傳遞不同,func的參數(shù)是int p,表示引用傳遞。如輸出所示,通過引用傳遞,變量a的地址與變量p是相同的,也就是說引用傳遞把a的地址傳給了變量p,所以對變量p進行賦值之后,變量a的值也改變了,因為變量a與變量p實際是同一個變量。
3、指針傳遞
指針傳遞,顧名思義,int *p表明p是一個指針變量,調用func(a)是把變量a的內存地址傳遞過去賦值給指針變量p,此時指針變量p的值是變量a的內存地址,故可看到輸出p為efbfde2c(變量a的內存地址)。
*p是對指針p的值(即變量a的內存地址)進行取值,相當于*a,所以對*p進行賦值也就改變了變量a的值。
#includestdio.h
int func() {
return 10000;//這個函數(shù)返回了一個數(shù)字
}
void func1(int num) { printf("%d", num); }//這個函數(shù)接受一個數(shù)字并輸出
int main()
{
func1(func());//func1接受func返回的數(shù)字并輸出
return 0;
}