c 结构体中存在指针,指针的不同赋值方法
Posted 东方云哲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c 结构体中存在指针,指针的不同赋值方法相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct parameter{
char *fd;
int hit;
};
int main()
{
struct parameter*pptr = (struct parameter*)malloc(sizeof(struct parameter));
memset(pptr, 0, sizeof(struct parameter));
//pptr->fd = (char*)malloc(sizeof(char) * 10); //新建的指针fd存在于栈中,指向分配在堆中的内存。
//memset(pptr->fd, 0, 10 * sizeof(char));
pptr->fd = "agcdgg";//此时,fd在栈中, "agcdgg"也在栈中。因此不需要执行(char*)malloc(sizeof(char) * 10)为fd分配内存。
// strcpy(pptr->fd,"agcdgg");//若fd通过pptr->fd = (char*)malloc(sizeof(char) * 10)分配内存,则需要通过此种方式给fd指向的内存赋值。
pptr->hit = 1;
printf("%s", pptr->fd);
printf("%d", pptr->hit);
//free(pptr->fd);//若fd的赋值是通过pptr->fd = "agcdgg"完成,则不需要执行此行代码,
free(pptr);
return 0;
}
以上是关于c 结构体中存在指针,指针的不同赋值方法的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )