【吴从周课程】结构体

结构体变量名不能像数组直接当做地址使用,
memset(&stgirl,0,sizeof(stgirl)); //给结构体变量加&获得地址
这里的sizeof中可以是结构体类型stgirl 也可是struct st_girl

结构体的内存不小于成员变量内存之和
(各个变量在内存中的存储有空隙,使用内存对齐技术后可以等于)

结构指针是指向结构体的指针,可以利用结构指针访问成员变量:
struct st_girl stgirl,*pst=&stgirl;
stgirl.变量 //直接用结构体变量名访问
pst->变量 //这种比较形象,用的多
(*pst).变量 //这种用的比较少

指针的传参问题:
指针在函数中的传参问题:
示例1.

//int *a 表示传递的是一个指向b的指针变量或p的地址
void arr(int *a)
{
 *a=*a+3;
}
int main()
{
int b=3;
arr(&b);
printf("%d",b);
return 0;
}

示例2.

//struct st_girl *pst 表示传递的是一个指向st_girl的指针变量或结构体变量的地址
setValue(&stgirl);

void setValue(struct st_girl *pst)
{
pst->age=19;
strcpy(pst->name,"武则天");
printf("%s  %d",pst->name,pst->age);
}

两个函数
memcpy函数:
struct st_girl stgirl1,stgirl2;
stgirl.age=19;
strcpy(stgirl1.name,“武则天”);
memcpy(&stgirl2,&stgirl1,sizeof(struct st_girl));
直接复制整个stgirl1给stgirl2

bzero函数:
bzero(地址,sizeof(数据类型));
bzero和memset一样用于清0
实际开发中,由于结构体会定义到头文件中去,因此基本上不会在定义后直接定义变量。

发布了61 篇原创文章 · 获赞 1 · 访问量 1383

猜你喜欢

转载自blog.csdn.net/qq_42622433/article/details/103916435