f(a); //調用函數f,q指向a數組的第1個位置即指向a[0]

創新互聯自2013年起,是專業互聯網技術服務公司,擁有項目網站建設、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元金城江做網站,已為上家服務,為金城江各地企業和個人服務,聯系電話:028-86922220
i=0;[i=0]
i5成立開始循環:(*q)++;q指向的單元自加1,a數組[2,2,3,4,5]
i++;[i=1],i5成立繼續循環:(*q)++;q指向的單元自加1,a數組[3,2,3,4,5]
i++;[i=2],i5成立繼續循環:(*q)++;q指向的單元自加1,a數組[4,2,3,4,5]
i++;[i=3],i5成立繼續循環:(*q)++;q指向的單元自加1,a數組[5,2,3,4,5]
i++;[i=4],i5成立繼續循環:(*q)++;q指向的單元自加1,a數組[6,2,3,4,5]
i++;[i=5],i5不成立結束循環
輸出a數組
注意q指針的內容一直沒變,如果要變需要寫成q++;而不是(*q)++;
1.當然可以,函數名即為函數指針,也是其地址。
只要定義一個函數指針(按照要調用的函數形式進行定義),將要調用的函數名賦予它,即可調用。
#include?stdio.h
typedef?void(*pfun)(int?x);?//?指針函數:指向void返回,帶參數int參數的函數
void?output(int?x)
{
printf("x:?%d\n",?x);
}
int?main()
{
pfun?p?=?output;?//?將output函數指針賦予p
p(10);?//?通過函數指針調用函數
return?0;
}
你對函數調用和參數傳遞還不是很理解
1.首先函數調用的參數有形參和實參之分
swap(p,q);//p q為實參
void swap(int*a,int*b)//a b為形參
{int*t;
t=a;a=b;b=t;
}
2.指針變量名表示的是變量的值,這個值是其他變量的地址,而不是指針變量本身所在內存空間的地址
如:
int a;//定義整型變量,假設其地址為0xaaaaaaaa
int *p;//定義一個指針變量p,肯定要為其分配內存,假設為0xffffffff,還沒初始化,里面的數據是不確定的。
p=a;//p表示的0xffffffff里面的數據,是a的地址,執行后0xffffffff里面的數據變成a的地址,即0xaaaaaaaa
*p=5;//往a里寫入數據
3.形參跟實參是不同的變量,占用不同的內存空間
所以a b已經是兩個跟p q不同的變量了。
只不過是值跟他們相等罷了。
就如int m,n;
m=n; 你能說m和n是同個變量么?
4.既然形參和實參是不同的變量,
t=a;a=b;b=t;
交換a b的值(交換存儲在a b指針變量里的數據,這個數據是地址,變成a跟q指向同一個對象,b q指向同一個對象)不會影響到p q的值
int t;
t=*a;*a=*b;*b=t;//交換a b指針變量里的地址所指向的數據,這樣才能交換。
根據參數類型以及函數實現的功能綜合判斷。
注意不能單單看是否為指針。
要傳遞類型為A的值,如果參數類型是A*,那么為傳地址,反之,如果參數類型是A,那么是傳值。
比如,要傳遞int型參數:
1 傳值:
void func(int a);
2 傳地址:
void func(int *a);
而傳遞char *型參數。
1 傳值:
void func(char *a);
2 傳地址:
void func(char **a);
同樣是char *類型的參數,有可能是傳值,也有可能是傳地址。具體取決于函數實現功能。
文章題目:c語言函數調用地址變量 c語言地址做函數參數
文章鏈接:http://www.yijiale78.com/article20/ddochjo.html
成都網站建設公司_創新互聯,為您提供網站改版、標簽優化、網站收錄、營銷型網站建設、網站設計、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯