數(shù)組名就是指針,例如:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、余慶網(wǎng)站維護、網(wǎng)站推廣。
#include stdio.h
void?pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
擴展資料:
注意事項
非數(shù)組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內(nèi)存并不是一個數(shù)組,那么采用數(shù)組名的聲明方式或許就會給人產(chǎn)生錯誤的引導(dǎo)。類似的,如果指向的是一個數(shù)組區(qū)域,則會給人以更加豐富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
與
int main(int argc,char** argv)
{
/* code here */
}
兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數(shù)是指向某個元素起始地址的指針,而后面的這種方式則不能夠直觀地看出這種含義。
所謂對應(yīng)其實是參數(shù)形式上的對應(yīng)。上面的兩個函數(shù)都要求傳遞一個指針類型。并且還是雙指針類型。c的編譯器執(zhí)行的是字面上的語義檢查,并不實際追究這個參數(shù)真是子函數(shù)需要的。而你傳遞參數(shù)的正確與否在運行時才能反映出來。尤其是指針,傳遞一個錯誤的指針基本會導(dǎo)致你的程序運行不成功,或者直接終止運行。
上面你的代碼中你給你的子函數(shù)傳遞一個int 類型的值,編譯器肯定會報錯,但是你用顯式類型轉(zhuǎn)換將int轉(zhuǎn)換成雙指針類型就騙過了編譯器。比如這樣:
int test=0x00400000;
shell_sort((char**)test,n);
編譯通過,運行必然出錯。
*x++和*x = *x + 1完全兩個意思,你這是誤會了。
提示一下,跟指針沒什么關(guān)系,和優(yōu)先級有關(guān)。
你的地址值傳遞錯誤,按照我給你修改的試試看,一定要注意你的實參傳遞的是地址還是具體的值,如果是地址,在子函數(shù)中就不要去修改你傳遞進來的地址。
int
main(void)
{
int
data=0;
//此處隨機分配內(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;
//此處,只是在同一個內(nèi)存空間修改其值,所以不要取地址
top=cursor;
return
data;
}
}