1.指针赋值
定义一个指针变量,如果要用它一定要给它分配空间。
struct abc *tak;
tak->dog = 2; 错误
针对上面两种错误的改进:
(1).把变量的地址赋值给指针
int b; int *p; p = &b; *p = 2; 正确
(2).分配要操作的空间
int *p; p = (int *)malloc(sizeof(int)); *p = 2; 正确
struct abc{
struct abc *tak;
tak = (struct abc *)malloc(sizeof(struct abc));
tak->dog = 2; 正确
2.sizeof
结构体要考虑,字节对齐
定义一个指针变量,如果要用它一定要给它分配空间。
如:
struct abc{ int *p; *p = 2; 错误
int dog;
}; char *q;
struct abc *tak;
tak->dog = 2; 错误
针对上面两种错误的改进:
(1).把变量的地址赋值给指针
int b; int *p; p = &b; *p = 2; 正确
(2).分配要操作的空间
int *p; p = (int *)malloc(sizeof(int)); *p = 2; 正确
struct abc{
int dog;
}; char *q;
struct abc *tak;
tak = (struct abc *)malloc(sizeof(struct abc));
tak->dog = 2; 正确
2.sizeof
sizeof是一个关键字。
void abc(char b[ ]); sizeof(b); //数组名作形参,相当于传递的是指针,占4个字节int a;
A. sizeof(int)
B. sizeof(i)
C. sizeof i
D. sizeof int
上面A,B,C的写法都是正确的,D写法不正确,编译器不通过。
int b; sizeof(b); //整形,32位机,占个字节
char *b = "qiao"; sizeof(b); //指针,占4个字节
char b[ ] = "qiao"; sizeof(b); //数组,字符串,占5个字节,包括“\0”。
结构体要考虑,字节对齐
作者:qiao_yihan 发表于2013-12-22 0:41:37 原文链接
阅读:130 评论:0 查看评论