C语言中如何定义一个结构能包含指向自己的指针

2024-05-24

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;(赋予数组首地址)

或者是:

上一篇:复习题井巷工程下一篇:人与人相互尊重的语句