成都网站建设设计

将想法与焦点和您一起共享

c语言返回结构指针的函数 c++返回指针的函数

C语言返回结构的指针问题?

直接把结构体变量传递参数是传值,

成都创新互联公司主要从事成都网站设计、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务鲁甸,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

st *fun(struct st x)

这里的形参x其实是传递的实参y的拷贝,这和形参不能影响实参是同样的道理。而且x在fun函数结束后就被系统回收了,取得的地址当然就成野指针了,所以应该用结构体指针传递参数:

#include "stdio.h"

#include "string.h"

struct st

{

int a;

char b[10];

};

void fun(struct st *px)

{

px-a = 100;

strcpy(px-b,"99999");

}

int main()

{

struct st y, *p;

p = y;

y.a = 999;

strcpy(y.b,"0");

printf("y.a=%d y.b=%s\n",y.a,y.b);

fun(p);

printf("(*p).a=%d (*p).b=%s\n",(*p).a,(*p).b);

}

C语言怎么让一个函数返回指针

这种方式叫做“用指针函数*creat()的返回值来传递动态内存”,这是一个C语法

首先你要注意,子函数*creat()用了malloc动态申请内存,而return返回的是指针变量所指向的地址,而不是指针!相当于将你所申请的动态内存返回给主函数

int

*fun(void)//这里是指针函数

{

int

*p

=

(int

*)

malloc

(int);//动态申请内存//p在这里指向了一块合法内存的地址

return

p;

}

void

main(void)

{

int

*q

=

NULL;

q

=

fun();//fun()返回指针p所指向的地址,(指针p是在栈上创建的,所以*fun()函数运行完,指针所分配的内存被系统自动释放)这时q指向p,得到了malloc所申请到的内存

free(q);//释放动态内存

}

C语言返回结构指针的函数

进入fun函数时,会创建一个局部变量形参stu,这个形参stu与实参stu1不是一回事,stu只是与stu1数据一模一样的复制品而已。当fun函数对stu操作结束后返回stu的指针,但因为stu是局部变量,在fun函数结束后会释放掉,由于main函数使用fun函数返回的指针pp,pp指向了已被释放掉的stu,所以打印时必然输出些乱码。

求解一个c语言函数返回结构体指针的问题

#includestdio.h

#includestring.h

#includeiostream

#includefstream

#includestdlib.h

using namespace std;

typedef struct point{                            //结构体设计

int A, B, C, a, b, c, id, n;

}point;

point *ReadFile(){               

static point ss[110];

char data[50] = {'\0'};

int m1 = 0, n = 0, k, i;

for(int i = 0; i  100; i++){

ss[i].id=rand()%10;

ss[i].A=rand()%10;

ss[i].B=rand()%10;

ss[i].C=rand()%10;

ss[i].D=rand()%10;

ss[i].E=rand()%10;

ss[i].F=rand()%10;

}    

return ss;

}

void main(){

point male[110], female[110], players[110];

male = ReadFile();

}

ss是局部变量,有效范围只局限于定义ss的函数体内,即只在函数ReadFile里有效,函数返回后,ss就失效了。

你可以在ReadFile里定义ss的前面加上static修饰,表示这个是静态局部变量,静态局部变量的内存有效范围可以全局有效。

static point ss[110];

另外,结构体的typedef定义不完整。

C语言,用返回值为指针的函数解决

搞定

额 , 现在可以直接用b , 因为 数组 变量b 本身是不能修改的, 而且 函数结束后 b 的生命就结束了。

所以 我在 b的前面 加了static

for(i=r;*(ch+i)!='\0';i++) //找到 目标函数的结尾

for(j=0;j=i-r+1;j++) // i-r 是 从m到最后字符串的长度

*(b+j)=*(ch+r-1+j); //拷贝

char * x= b;

return x;

复制以下的

#includestdio.h

void main()

{

char a[20];int m=0;char*fuzhi(char*,int);

printf("输入字符:");

gets(a);

printf("输入起始位数:");

scanf("%d",m);

printf("%s\n",fuzhi(a,m));

}

char *fuzhi(char*ch,int r)

{static char b[20];int i,j;

for(i=r;*(ch+i)!='\0';i++)

for(j=0;j=i-r+1;j++)

*(b+j)=*(ch+r-1+j);

char * x= b;

return x;

}

c语言函数能不能返回结构体

c语言函数可以返回结构体,操作方法如下:

1、首先在电脑中打开visual studio新建项目,给这个结构体取个名字叫student。

2、然后添加变量,如下图所示。

3、然后给结构体类型指针p申请堆空间,如下图所示。

4、接着使用for循环给结构体赋值,如下图所示。

5、最后在通过for循环打印输出,这样就完成就结构体的基本创建,结尾不要忘了使用free(p):释放申请的堆空间。


文章名称:c语言返回结构指针的函数 c++返回指针的函数
分享链接:http://chengdu.cdxwcx.cn/article/hgpjse.html