ntjm.net
当前位置:首页 >> 结构体数组指针 >>

结构体数组指针

结构体指针数组:存放的指针,这些指针指向的类型是结构体类型.数组指针:存放的也是指针,指针指向的类型和定义的数组的类型是一致的.这两种结构存放的指针都和定义的类型有关.都是指向定义的数据结构的类型.

struct studen *(std[4])

我说明写在案例的备注里,你参考吧.#include<stdio.h> typedef struct st { int id; }ST,*STP; //先定义类型 ST是结构类型 STP是结构指针类型 int main() { STP st[2];//这里st就是你要的结构指针数组 ST st1,st2;//这里我定义了2个结构变量,并赋值,让指针数组的元素分别指向这两个变量地址 st1.id=1;st2.id=2; st[0]=&st1; st[1]=&st2; printf("%d,%d\n",st[0]->id,st[1]->id);//打印指针数组指向地址内容 return 0; }

#include<stdio.h> struct STU //定义结构体 { int stu_no; char stu_name[8]; }stu[10]; // void main() { STU *p; p=stu; }

你问的是指向的类型还是指针本身的类型?指针本身的话都是INT型的!指向什么类型的话就由程序员来定了!

1、结构体指针其实是一个指针,它存储的是指向某个结构体的“地址”,所以结构体指针数组存储的其实是指向一组结构体的“地址”数组,它本身并不包含结构体的具体内容(没有被分配内存)2、所以当用到他们时,要么重定向,比如:d=&b; //让d指向b,d存储的是b的地址,这样就能通过d来调用b了 要么用malloc为他们分配内存:d=(struct h *)malloc(sizeof(struct h)); 这样d就指向系统为其分配的一块内存,其内容就是struct h中的东西

1、结构体数组也是数组,只不过数组元素是结构体而已.所以,指向结构体数组的指针和一般数组指针没有区别,指向什么位置那就由你决定了.若你已经定义了一个结构体类型Yourstruct,再执行下面语句: struct Yourstruct structArray[10],*p; p = structArray; //p指向数组中的第1个结构体变量. ++p; // p指向数组中的第2个结构体变量.2、如果是在结构体中定义了指针,每个结构体变量都有自己的存储空间,结构体成员指针指向何处也是由你来决定的.

有的比如struct a{int x;int y;};struct a str; //声明一个结构体struct a *pstr; //声明结构指针pstr=&str; //给指针赋值pstr->x=6; //结构体指针访问结构成员使用符号"->",等价于str.x没看清楚题目,这里补充下,结构体数组指针也是有的.

比如 struct stu {}; 那么 stu *p[10];这个就是结构体数组指针 stu s1,s2,s3; p[0] = &s1; p[1] = &s2;

网站首页 | 网站地图
All rights reserved Powered by www.ntjm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com