#include stdio.h
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、峨山縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
void fun(int (*p1)[3],int (*p2)[3]);
int main()
{
int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;
int p2[3][3] = {0};
int i = 0, j = 0;
fun(p1,p2);
for(i = 0;i 3;i++){
for(j = 0;j 3;j++){
printf("%d ",*(*(p2+i)+j));?
}
printf("\n");
}? ? ?
return 0;
}
void fun(int (*p1)[3],int (*p2)[3])
{
int i = 0,j = 0;
for(i = 0;i 3;i++){
for(j = 0;j 3;j++){
*(p2[j]+i) = *(p1[i]+j);
}
}
}
擴(kuò)展資料:
函數(shù)指針的聲明方法為:
返回值類(lèi)型 ( *?指針變量名) ([形參列表]);
其中,“返回值類(lèi)型”說(shuō)明函數(shù)的返回類(lèi)型,“(指針變量名 )”中的括號(hào)不能省,括號(hào)改變了運(yùn)算符的優(yōu)先級(jí)。若省略整體則成為一個(gè)函數(shù)說(shuō)明,說(shuō)明了一個(gè)返回的數(shù)據(jù)類(lèi)型是指針的函數(shù),后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。例如:
int func(int x); /* 聲明一個(gè)函數(shù) */
int (*f) (int x); /* 聲明一個(gè)函數(shù)指針 */
f=func; /* 將func函數(shù)的首地址賦給指針f */
或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:
f = func;
賦值時(shí)函數(shù)func不帶括號(hào),也不帶參數(shù),由于func代表函數(shù)的首地址,因此經(jīng)過(guò)賦值以后,指針f就指向函數(shù)func(x)的代碼的首地址。
參考資料:
百度百科-函數(shù)指針
int (*ptr)[4]
ptr是一個(gè)指針,他指向的類(lèi)型是一個(gè)長(zhǎng)為4的數(shù)組,數(shù)組的類(lèi)型是int
簡(jiǎn)單的說(shuō),ptr是一個(gè)指向int[4]的指針
43行是把上面說(shuō)的那種類(lèi)型轉(zhuǎn)成int*類(lèi)型
如果你要問(wèn)為什么可以這么轉(zhuǎn),那其實(shí)C語(yǔ)言怎么轉(zhuǎn)都行,只要程序員自己知道自己在做什么。。
這里的話,因?yàn)閜tr是指向int[4]的,也就是說(shuō)他是指向一個(gè)int[4]的第一個(gè)元素的,所以ptr存儲(chǔ)的是int[4]的第一個(gè)元素的地址,也就是一個(gè)int數(shù)據(jù)的地址,那當(dāng)然可以轉(zhuǎn)成int*,從邏輯上講也是沒(méi)問(wèn)題的~
數(shù)組名就是指針,例如:
#include stdio.h
void?pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
擴(kuò)展資料:
注意事項(xiàng)
非數(shù)組類(lèi)的聲明盡量以指針的方式進(jìn)行比較好。倘若一個(gè)指針指向的內(nèi)存并不是一個(gè)數(shù)組,那么采用數(shù)組名的聲明方式或許就會(huì)給人產(chǎn)生錯(cuò)誤的引導(dǎo)。類(lèi)似的,如果指向的是一個(gè)數(shù)組區(qū)域,則會(huì)給人以更加豐富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
與
int main(int argc,char** argv)
{
/* code here */
}
兩種方式完全等價(jià),但是前面一種能夠更清晰地看出:這個(gè)參數(shù)是指向某個(gè)元素起始地址的指針,而后面的這種方式則不能夠直觀地看出這種含義。
例:
#includestdio.h
void?fact(int?*p,?int?n)
{
for(i?=?0;?i??n;?++i)
{
printf("%d?",?p?+?i);
}
printf("\n");
p[3]?=?6;
}
int?main()
{
int?a[5]?=?{1,?2,?3,?4,?5};
fact(a,?5);
for(i?=?0;?i??5;?++i)
{
printf("%d?",?a[i]);
}
printf("\n");
return?0;
}