1、结构体内存分配按照最严格的数据类型分配
例:
struct student
{
int num;
char c;
};
struct student stu1,stu2,stus[20],*ps;
内存分配的时候按照int型分配(地址按照能被4整除),成员的排列次序不同,内存分配不同。。。
另外编译器影响结构体的内存分配。。最有效的方式(sizeof(student))计算字节数。。
struct student
{
int num;
char name[20];
}stu1,stu2,stus[20],*ps;
struct
{
int num;
char name[20];
}stu1;//没有结构体名称,所以不能在其他地方定义变量。。
无语。。
2、结构体可以嵌套,但是结构体不能嵌套自身。。。
Linux定义: Linux is not unix!!!
struct student li,zhang={"zhang",1,2,3};
li=zhang;//结构体可以直接相等。。当然两个不同的结构体变量不能直接赋值。。。
li={"li",1,2,3};//错。。
if(stu1==stu2);//错。。
struct student
{
int age;
char *name;
}*ps;
ps=(struct student *)malloc(sizeof(struct student));
(*ps).age=30;
(*ps).name=(char *)malloc(20);
strcpy((*ps).name,"jince");
free((*ps).name);//释放顺序。。。
free(ps);
3、海贼王更新。。。
4、typedef int intage;
typedef double real;
#define int intage;
#define char* string;
string s1,s2;//这时候存在问题。。。 char* s1,s2;。。。
typedef char* string;
string s1,s2;//OK
typedef int bool;
struct Rec
{
...
};
typedef struct Rec Rec;
Rec jince;
指针变量统一占4个字节。。。
指针数组。。。解决链表问题??
前一个节点记录后一个节点的地址。。。。
typedef struct Link
{
int a;
char c;
Link *next;
}Link;
5、#ifndef LIST_H //预编译命令。。。对于已经定义的LIST_H不进行编译。。
posted on 2010-10-30 20:31
jince 阅读(235)
评论(0) 编辑 收藏 引用