扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先函数返回一个指针类型即返回地址。
创新互联建站主要从事成都网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务南沙,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
例:
int * func(void)
{
int a= 10;
int *p = a;
return p;
}
给你一个例子,是谭浩强的C语言程序设计P.199.页的一个例子:你可以找该书来参考:
------------------------------
/*使用指向函数的指针*/
#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;
}
/*第三个参数为指向返回值为整型的函数的指针*/
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("输入两个整数:\n");
printf("a=");
scanf("%d",a);
printf("b=");
scanf("%d",b);
printf("大的数为:");
process(a,b,max);
printf("小的数为:");
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} ; //改成静态变量,即可
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
// 动态分配 n 个字节,返回 char *
char *f(char *name, int n){name = (char*) malloc(sizeof(char)*n);
return name;
}
// 动态分配 n 个字节,返回 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个字节,等于声明了 char p[50]
scanf("%s",p); // 使用 char p[50]
printf("%s\n",p);
x = (int *) v(name,40); // 给 x 分配 40个字节,(并强制转换)等于声明了 int x[10];for (i=0;i10;i++) x[i]=i+1; //使用 int x[10];
for (i=0;i10;i++) printf("%d ",x[i]);
}
这个问题一个较为妥善的方法是把数组定义在主函数,再传入数组地址给自定义函数,如果你非要在自定义函数里定义也行,至于是否需要设置为static,那得看情况,因为函数退出时栈空间并不是马上被刷新,如果你能保证该栈空间在你访问前没被释放就没必要定义为static,但是保险起见定义static更好,因为你可能不知道到底该内存是不是被重新写入了数据,至于你说要返回指向指针的指针,我举个例子,int**
fun(),这个就是返回一个指向指针的指针,其指向的指针指向int型,呵呵,明白了没
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流