數(shù)組名就是指針,例如:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、洛龍網(wǎng)站維護(hù)、網(wǎng)站推廣。
#include stdio.h
void?pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
擴(kuò)展資料:
注意事項(xiàng)
非數(shù)組類的聲明盡量以指針的方式進(jìn)行比較好。倘若一個(gè)指針指向的內(nèi)存并不是一個(gè)數(shù)組,那么采用數(shù)組名的聲明方式或許就會(huì)給人產(chǎn)生錯(cuò)誤的引導(dǎo)。類似的,如果指向的是一個(gè)數(shù)組區(qū)域,則會(huì)給人以更加豐富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
與
int main(int argc,char** argv)
{
/* code here */
}
兩種方式完全等價(jià),但是前面一種能夠更清晰地看出:這個(gè)參數(shù)是指向某個(gè)元素起始地址的指針,而后面的這種方式則不能夠直觀地看出這種含義。
你的地址值傳遞錯(cuò)誤,按照我給你修改的試試看,一定要注意你的實(shí)參傳遞的是地址還是具體的值,如果是地址,在子函數(shù)中就不要去修改你傳遞進(jìn)來的地址。
int
main(void)
{
int
data=0;
//此處隨機(jī)分配內(nèi)存空間,不要用指針
myStack=makeStack(myStack,top);
Push(myStack,3);
Push(myStack,8);
Push(myStack,19);
Push(myStack,31);
Push(myStack,43);
Push(myStack,36);
Pop(myStack,data);//此處,傳遞的是地址值
printf("%d
",data);
}
int*
Pop(LinkedStack
myStack,int
*data)
{
pStack
cursor=myStack;
if(Stack_Empty())
{
}
else
{
while(cursor-next!=top)
{
cursor=cursor-next;
}
*data=top-data;
//此處,只是在同一個(gè)內(nèi)存空間修改其值,所以不要取地址
top=cursor;
return
data;
}
}
這是個(gè)函數(shù)指針 前面的void為返回值類型 后面的void*為參數(shù)類型.
函數(shù)指針是可以作為某個(gè)函數(shù)的參數(shù)的.
(1) 指向函數(shù)的指針變量的一般定義形式為:
數(shù)據(jù)類型 (*指針變量名)(函數(shù)參數(shù)列表)
函數(shù)名是可以缺省的 作為參數(shù)傳遞的時(shí)候會(huì)去調(diào)和 void*(*)(void*)這個(gè)類型相匹配的函數(shù)的
作為參數(shù)調(diào)用這個(gè)函數(shù)的時(shí)候 返回類型是void* 就相當(dāng)于傳了一個(gè)參數(shù)類型為void*,當(dāng)然這個(gè)函數(shù)指針的參數(shù)也是void*的
問題在你這個(gè)函數(shù)的定義參數(shù)void find(float a[],float *pmax,float *pmin)
你在函數(shù)內(nèi)對(duì)后2個(gè)參數(shù)直接進(jìn)行了賦值。
{pmax=a[t];}
if(a[t]*pmin)
{pmin=a[t];}
你在函數(shù)內(nèi)賦值并不會(huì)被外部的參數(shù)造成影響,你需要把用指針的引用才行
float* pMax, float* pmin
這樣在函數(shù)內(nèi)的賦值才有效果