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://cqwzjz.cn/article/hgpjse.html