简化结构体
struct name {
int b;
}tt,*ss;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//结构
struct MyFirstStu
{
char name[9];
char sex;
int score[2];
};
//结构
struct MySecond {
char title[10];
char rest[20];
float money;
};
struct MyThread {
char *title;
char *rest;
float money;
};
#pragma mark - malloc free
struct namect {
char *fname;
char *lname;
int letters;
};
void getinfo (struct namect *);
//实参为结构
void fW(struct MyFirstStu a[])
{
struct MyFirstStu b = {"Zhao",'m',85,90};
a[1] = b;
puts(a[0].name);
puts(a[1].name);
}
void mallFree();
//返回结构数组,函数
struct MyFirstStu getInfo();
int main(int argc, const char * argv[])
{
mallFree();
return 0;
//1、结构数组初始化
struct MyFirstStu c[2] = {{"Q",'T',{232,90}},{"Zhao",'k',{853,96}}};
//结构传参
fW(c);
struct MySecond sec;
sec.title[0] = '3';
gets(sec.title);
puts(sec.title);
//2、结构指针,相同结构间指向
struct MySecond *him;
him = &sec; //him 指针所指向的地址
//him 是指针地址,所以赋值是是寻址 * 或者 ->
him->title[0] = 's';
(*him).title[1] = 'k';
struct MyFirstStu *him2;
him2 = &c[0];
//3、相同结构直接赋值给结构
struct MyFirstStu firStu;
firStu = c[0];
//4 注意:结构成员是 char 指针存放字符串,书上说会有潜在风险;结构成员如果用来存放字符串应该用字符数组 char []
//char 指针应该用来存放已经在其它地方开辟空间的字符串变量
struct MyThread tread = {"dsfsdfa","dfsdaf",11.4f}; //不建议
char temp[80];
gets(temp);
struct MyThread *tread2;
tread2->title = (char*) malloc(strlen (temp)+1);
//字符串拷贝
strcpy(tread2->title, temp);
//直接赋值
tread2->title = temp;
free(tread2->title);
return 0;
}
void mallFree()
{
struct namect person;
getinfo(&person);
makeinfo(&person);
showinfo(&person);
cleanup(&person);
}
void getinfo (struct namect *pstt)
{
struct namect aa;
struct namect *pst = &aa;
char temp[81];
gets(temp);
//分配用来存放名字的内存
pst->fname = (char*)malloc(strlen(temp)+1);
//把名字复制到已分配的内存中
strcpy(pst->fname, temp);
gets(temp);
pst->lname = (char*)malloc(strlen(temp)+1);
strcpy(pst->lname, temp);
free(pst->fname);
free(pst->lname);
}
typedef 结构体
//一、加了 typedef 的结构
typedef struct name {
int a;
float b;
}Namea; //代表 name结构,初始化时候不需要在前面 加 struct
//一使用
struct name nameS = {3,99.4f};
Namea aaa = {1,3.22f};