首先函數(shù)返回一個指針類型即返回地址。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)南沙,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
例:
int * func(void)
{
int a= 10;
int *p = a;
return p;
}
給你一個例子,是譚浩強的C語言程序設(shè)計P.199.頁的一個例子:你可以找該書來參考:
------------------------------
/*使用指向函數(shù)的指針*/
#include stdio.h
int max(int x,int y)
{
int z;
if(xy){
z=x;
}else{
z=y;
}
return z;
}
int min(int x,int y)
{
int z;
if(xy){
z=x;
}else{
z=y;
}
return z;
}
int add(int x,int y)
{
int z;
z=x+y;
return z;
}
/*第三個參數(shù)為指向返回值為整型的函數(shù)的指針*/
int process(int x,int y,int(*fun)())
{
int result;
result=(*fun)(x,y);
printf("[%d]\n",result);
}
int main(void)
{
int a,b;
printf("輸入兩個整數(shù):\n");
printf("a=");
scanf("%d",a);
printf("b=");
scanf("%d",b);
printf("大的數(shù)為:");
process(a,b,max);
printf("小的數(shù)為:");
process(a,b,min);
printf("和為:");
process(a,b,add);
return 0;
}
兩種改法:
一、?
char?*?copy(?char?s[],?int?m?)
{
int?i;
for(?i=0;im-1??s[i]!='\0'?;i++?)?;
return?s[i]?;
}
二、
char?*?copy(?char?s[],?int?m?)
{
static?char?str[80]={0}?;?//改成靜態(tài)變量,即可
int?i;
#includestdio.h
void string_cut(char s[],char c)
{int i,j;
for(i=j=0;s[i];i++)
if(s[i]!=c)s[j++]=s[i];
s[j]='\0';
}
int main()
{char s[200],ch;
gets(s);
scanf("%c",ch);
string_cut(s,ch);
printf("%s\n",s);
return 0;
}
可以。返回指針實際上就是地址。
例如:
#includestdio.h
#includestdlib.h
// 動態(tài)分配 n 個字節(jié),返回 char *
char *f(char *name, int n){name = (char*) malloc(sizeof(char)*n);
return name;
}
// 動態(tài)分配 n 個字節(jié),返回 void *
void *v(char *name, int n){name = (char*) malloc(sizeof(char)*n);
return name;
}
main(){ char *name;
char *p;
int *x,i;
p = f(name,50); // 給 p 分配 50個字節(jié),等于聲明了 char p[50]
scanf("%s",p); // 使用 char p[50]
printf("%s\n",p);
x = (int *) v(name,40); // 給 x 分配 40個字節(jié),(并強制轉(zhuǎn)換)等于聲明了 int x[10];for (i=0;i10;i++) x[i]=i+1; //使用 int x[10];
for (i=0;i10;i++) printf("%d ",x[i]);
}
這個問題一個較為妥善的方法是把數(shù)組定義在主函數(shù),再傳入數(shù)組地址給自定義函數(shù),如果你非要在自定義函數(shù)里定義也行,至于是否需要設(shè)置為static,那得看情況,因為函數(shù)退出時??臻g并不是馬上被刷新,如果你能保證該??臻g在你訪問前沒被釋放就沒必要定義為static,但是保險起見定義static更好,因為你可能不知道到底該內(nèi)存是不是被重新寫入了數(shù)據(jù),至于你說要返回指向指針的指針,我舉個例子,int**
fun(),這個就是返回一個指向指針的指針,其指向的指針指向int型,呵呵,明白了沒