『壹』 請問在c語言中,函數傳參時怎樣利用指針傳遞數組
數組名就是指針,例如:
#include <stdio.h>
voidpr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
(1)c語言傳指針舉例擴展閱讀:
注意事項
非數組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內存並不是一個數組,那麼採用數組名的聲明方式或許就會給人產生錯誤的引導。類似的,如果指向的是一個數組區域,則會給人以更加豐富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
與
int main(int argc,char** argv)
{
/* code here */
}
兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數是指向某個元素起始地址的指針,而後面的這種方式則不能夠直觀地看出這種含義。
『貳』 c語言的函數指針舉個例子
函數指針 就是指向函數的指針
比如
voidpr_int(inta)//函數
{
printf("%d ",a);
}
voidfunc(void(*p)(int),intm)//函數指針做參數
{
p(m);//調用函數指針
}
intmain()
{
func(pr_int,100);
return0;
}
『叄』 關於C語言函數傳遞指針參數,幫我看看我的程序
你的地址值傳遞錯誤,按照我給你修改的試試看,一定要注意你的實參傳遞的是地址還是具體的值,如果是地址,在子函數中就不要去修改你傳遞進來的地址。
int
main(void)
{
int
data=0;
//此處隨機分配內存空間,不要用指針
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;
//此處,只是在同一個內存空間修改其值,所以不要取地址
top=cursor;
return
data;
}
}
『肆』 c語言,指針函數的應用,能舉個簡單點的例子嗎越簡單越好啊
int
(*p)(參數表列)這個是定義一個指向函數的指針,返回值為整型。比如int
max(int
a,int
b)將max換成(*p)
即可,p里放的是max函數的入口地址,所以,此時的p做自加自減等運算無意義。不能用*(p+1)表示函數的下一條指令。
int
*p()是函數,此函數的返回值是個指向整型變數的指針變數。
***************************************************
以上是你需要的,下面是一些其它相關容易混淆的:
int
*p[n]:定義指針數組P,它由n個指向整型數據的指針元素組成。
int
(*p)[n]:P為指向含n個元素的一維數組的指針變數。
『伍』 c語言的函數指針舉個例子
返回指針函數的原型:類型名*函數名(參數列表);
如果按照你的vod * func(void) {}感覺不太對。既然有返回值(指針),怎麼會是void呢。所以顯示不對。
下面寫了一個返回指針值的函數的例子。你可參考下:
#include<stdio.h>
char*func(void)
{
staticchara[20]="Hello,Clanguage.";
returna;
}
voidmain(void)
{
char*p;
p=func();
while(*p)
printf("%c",*p++);
printf(" ");
}
『陸』 論述C語言中指針的概念和作用,並舉例說明
1、指針概念:變數的地址(計算機內存位元組的編號)叫做指針,存放變數地址的變數叫指針變
量,
簡言之,指針是用來存放地址的。
2、作用:指向這個變數或數組的首地址,是變數的間接引用方式。其值如果改變,變數的值或數組元素的值也會跟著改變。程序對變數的操作實際上是對變數所在的存儲空間讀取和寫入數據。方便對變數的操作。
舉例說明:
int
a=3;/*定義一個整型變數a,並賦初值3*/
int
*p;/*定義一個指針變數P*/
p=&a;/*讓p指向a的首地址,也就是a的地址*/
程序為a分配一個2個位元組的存儲單元,假如2個位元組的地址分別為(ABCD1和ABCD2,唯一),那麼p裡面放的值就是ABCD1,不是3。這時可通過p直接引用a,實際上*p=3。以後不管a存放在內存中的哪個地方,只用通過調用p就可以引用a。這時如果令*p=4,則最後的a值也為4。對於數組,指針是指向數組的首地址。
『柒』 關於C語言指針的簡單的例子
p++就是每次把地址加一,那麼你scanf()以後輸入的內容放到的是地址增加的指針裡面,這樣就完成了自動*(p+i)=a[i]的過程。