鱼C论坛

 找回密码
 立即注册
查看: 4261|回复: 1

有一个关于指针的问题不明白

[复制链接]
发表于 2013-9-14 10:51:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include <stdio.h>


struct student

{

int num;

double score;

struct student *next;

}stu, stud;


void main()

{

struct student *head, *p1, *p2, *p0, *p3, *p4;

int n, i;

p0 = &stud;

p1 = &stu;

p2 = &stu;

scanf("%d %lf", &stu.num, &stu.score);

head = NULL;

n = 0;

while ( p1 -> num )

{

n ++;

if ( n == 1 )

{

head = p1;

}

else

{

p2 -> next = p1;

}

p2 = p1;

        p1 -> next = malloc( sizeof( stu ) );

   p1 = p1 -> next;

scanf("%d %lf", &p1 -> num, &p1 -> score);

}

p2 -> next = NULL;

p3 = head;

p4 = p3;

while ( head )

{

printf("学号:%d\n成绩:%lf\n", head -> num, head -> score);

head = head -> next;

}

    printf("输入要插入第几个节点:");

scanf("%d", &i);

    if ( n < i )

{

printf("error\n");

}

else

{

n = 0;

printf("输入要插入的数据:");

scanf("%d %lf", &stud.num, &stud.score);

while ( p3 -> next )

{

n ++;

   if ( n == i )

{

p0 -> next = p3 -> next;

p3 -> next = p0;

}

   p3 = p3 -> next;

}

}

    while ( p4 )

{

printf("学号:%d\n成绩:%lf\n", p4 -> num, p4 -> score);

p4 = p4 -> next;

}

}

这是我看了小甲鱼结构体与共用体教程之后做的,这其中为什么我将p3指向了head,而head指向的地址发生了变化,p3却没没有变,而我再定义一个p5指针指向p3的时候p3变了p5也会跟着变,这是怎么回事?


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-9-14 12:11:43 | 显示全部楼层
我想说你就不能按格式发代码啊→_→
你说“这其中为什么我将p3指向了head,而head指向的地址发生了变化,p3却没没有变”
p3存放着head的地址 head存放的地址变化了和p3没有任何关系 p3任然是指向head
但是*p3 的值应该是变化的 *p3是head的地址   head指向的地址发生了变化 *p3 的值当然变化
但p3的值不会变
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-3 23:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表