c语言结构数组 结构指针


一、结构数组

在c语言中,具有相同数据类型的数据可以组成一个数组,指向相同数据类型的指针数组。
根据以上描述,结构也是一类具有相同数据类型的数据,所以结构也可以组成一个结构数组,结构中的每一元素都是结构变量。
结构数组说明如下:
<存储类型> struct 结构名 结构数组名[元素个数]={初始值};
例: struct a{int a,int b,char *c}; //定义一个结构
定义一个结构数组
struct a b[3];//定义一个结构数组,结构数组中包括三个结构元素b[0] b[1] b[2],这三个结构元素都具有结构a的成员项。
结构数组常用于处理具有相同类型的数据集合体,结构体类似于面向对象语言里面的对象。


1.1 结构数组同普通变量数组具有相同的属性,再对结构数组进行定义时,可以不制定元素个数,而通过初始化来确定元素的个数。
1.2 结构数组也具有数组的属性,结构数组名是存储结构数组的首地址,如上b就是结构数组的首地址。
例:
#include “stdio.h”
#define NUM 2
struct adeal{
int a;
char *d;
};
int main(){
struct adeal a[NUM]={
{100,”maomao365.com”},
{200,”linux c爱好者”}
};
int i=0;
for(i=0;i
二、结构指针

在c语言中,指向结构的指针变量我们称之为结构指针,它同其它指针的使用方法完全相同。
结构指针定义如下:
<存储类型> struct 结构名 *结构指针名 [=初始地址值];
在进行指针定义时,结构名需事先定义
例:
struct adeal *a; //定义一个结构指针a
struct adeal *b; //定义一个结构指针b
2.1 由于结构指针是指向整个结构体,所以结构指针进行 增减运算,将会向前或向后移动一个机构变量,结构指针每次物理地址的增量取决于结构体的大小
2.2 结构体中也可以嵌套结构指针
例:
struct a{
int a;
struct adeal *b;
};
//结构体a 中嵌套结构体b
2.3 结构体中也可以嵌套本身,这种结构体自我嵌套模式,称之为递归结构体
例:
struct a
{
int a;
struct a *b;//存储一个同样结构体的首地址
};


例:
#include “stdio.h”
#define NUM 2 //宏定义
struct adeal{
int a;
char *d;
};
int main(){
struct adeal a[NUM]={
{100,”maomao365.com”},
{200,”linux c爱好者”}
};
struct adeal *b;
b =a;
int i=0;
for(i=0;ia,(b+i)->d);
//定义一个机构体
struct adeal c,*d;
d=&c;
d->a =1000;
d->d =”linux c 爱好者!”;
printf(“结构体值:%d %s\n”,d->a,d->d);
return 1;
}

[root@localhost ~]#./t
100 maomao365.com
200 linux c爱好者
结构体值:1000 linux c 爱好者!

相关阅读:
c语言结构定义
linux c 何时用 . 何时使用->