C语言中如何定义一个结构能包含指向自己的指针(精选2篇)
篇1:C语言中如何定义一个结构能包含指向自己的指针
C语言中如何定义一个结构能包含指向自己的指针
C 语言中的结构当然可以包含指向自己的指针;[K&R2, 第6.5 节] 的讨论和例子表明了这点。NODEPTR 例子的问题是在声明next 域的时候typedef 还没有定义。为了解决这个问题,首先赋予这个结构一个标签(“struct node”)。然后,声明“next” 域为“struct node *”, 或者分开typedef 定义和结构定义, 或者两者都采纳。以下是一个修改后的版本:
struct node{
char *item;
struct node *next;
};
typedef struct node *NODEPTR;
至少还有三种同样正确的方法解决这个问题。
在用typedef 定义互相引用的两个结构时也会产生类似的问题, 可以用同样的方法解决。
篇2:C语言中如何定义一个结构能包含指向自己的指针
指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。结构指针变量也可指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地址。
设ps为指向结构数组的指针变量,则ps也指向该结构数组的0号元素,ps+1指向1号元素,ps+i则指向i号元素。这与普通数组的情况现金网96y.org是一致的。
用指针变量输出结构数组。
struct stu{
int num;
char *name;
char sex;
float score;
}boy[5]={
{101,Zhou ping,M,45},{102,Zhang ping,M,62.5},{103,Liou fang,F,92.5},{104,Cheng ling,F,87},{105,Wang ming,M,58}
};
main(){
struct stu *ps;
printf(NotNametttSextScoretn);
for(ps=boy;psboy+5;ps++)
printf(%dt%stt%ct%ftn,ps-num,ps-name,ps-sex,ps-score);
}
在程序中,定义了stu结构类型的外部数组boy并作了初始化赋值。在main函数内定义ps为指向stu类型的指针。在循环语句for的表达式1中,ps被赋予boy的首地址,然后循环5次,输出boy数组中各成员值。
应该注意的是,一个结构指针变量虽然可以用来访问结构变量或结构数组元素的成员,但是,不能博彩公司排名q07i5.org使它指向一个成员。也就是说不允许取一个成员的地址来赋予它。因此,下面的赋值是错误的。
ps=boy[1].sex;
而只能是:
ps=boy;(赋予数组首地址)
或者是:
【C语言中如何定义一个结构能包含指向自己的指针】相关文章:
留学如何找到一个适合自己的房子06-10
如何让自己成为一个说话的高手美文05-13
excel中如何自定义函数06-11
教师如何提高自己正确使用教学语言的水平?07-01
如何知道一个网站在百度中的权重如何05-05
面试中如何回答自己的职业规划问题05-09
阅读教学中教师该如何扮演好自己的角色05-22
英文简历中如何说明自己所具有的电脑技能05-22
谈谈在自己的工作中如何进行心理教育的设想04-09