c语言结构体以及结构体指针的使用
结构体:
正常定义一个结构体:
typedef struct node{ char ch[10]; int len; }Seq,*llink;
定义结构体指针:
Seq *s;
或者
llink t;
之后关于s与t的用法,其实完全一样,只是在定义时不同,Seq *就相当于llink了
以为定义完指针以后就可以使用了吗?
NO!
需要为指针申请空间才能正常使用,否则会在输入这里出现很多莫名其妙的错误!亲测如此
需要添加库:
#include<stdlib.h> s = (struct node *)malloc(sizeof(struct node)); t = (struct node *)malloc(sizeof(struct node));
输入数据:
scanf("%d",&s->len);
这时候输入数据就可以正常使用了
输入整型数据需要加&
输入字符数据:scanf("%s",s->ch);
不需要添加&
输出数据:
printf("%d",s->len);
或者
printf("%d",(*s).len);
输出字符串数据:
printf("%s",s->ch);
或者
printf("%s",(*s).ch);
释放空间:
free(s);
额外的补充一下指针:
!!!!!!!!!!!!!!!!!注意!!!!!!!!!!!!!!!!!!!!!
·在使用任何定义的指针时一定需要申请内存才能正常使用
·使用指针不能直接使用++或者--
eg:int *n;
*n = 4;
*n--; //此处为错误用法
*n -= 1; //此处为正确用法
如果使用*n--,减去的是地址的大小,系统操作:*(n--)
很明显是应该值变化,而不是地址变化