结构体指针之间的相互赋值

时间:2022-11-17 14:00:24
定义了一个结构体(结构体中含该结构体的指针成员) 并定义了相应的指针 此时再定义一个新的空的指针 为何无法赋值使他与先前指针指向的地址相同?
结构体指针之间的相互赋值
结构体指针之间的相互赋值

10 个解决方案

#1


看你怎么调试的了,当前的这个值 是在某处打的断点的值吗?

#2


引用 1 楼 d741963250 的回复:
看你怎么调试的了,当前的这个值 是在某处打的断点的值吗?

直接运行 到这里中断了

#3


你的断点是停在 p = head 那里吗?
按 F11 执行后 p 的值就会变了

#4


当我上面的没说~~~~~代码没看清楚!

你的这情况还真没发生过

#5


你确定是在那一行中断了?
0xcdcdcdcd这根本就是还没有初始化,连p = NULL那一行都没有执行

#6


是O2/O3编译优化吗?

代码重排 或 代码精简 会造成这个结果

#7


在p=head之后加上一句

printf("%x, %x, =? %d\n", head, p, head == p ? 1 : 0);

#8


在那一行中断在我使用的IDE中代表那一行还未执行,要在它的下一行中断才得到执行这一行之后的结果.

#9


你确定 程序已经执行到p=head这句了吗?  如果没有, 那是正常的.

如果已经执行到了, 那么
怀疑你是在release模式下调试的.  
debug版执行到 p=head, p应该是NULL.

#10


你执行位置过了赋值的地方没

#1


看你怎么调试的了,当前的这个值 是在某处打的断点的值吗?

#2


引用 1 楼 d741963250 的回复:
看你怎么调试的了,当前的这个值 是在某处打的断点的值吗?

直接运行 到这里中断了

#3


你的断点是停在 p = head 那里吗?
按 F11 执行后 p 的值就会变了

#4


当我上面的没说~~~~~代码没看清楚!

你的这情况还真没发生过

#5


你确定是在那一行中断了?
0xcdcdcdcd这根本就是还没有初始化,连p = NULL那一行都没有执行

#6


是O2/O3编译优化吗?

代码重排 或 代码精简 会造成这个结果

#7


在p=head之后加上一句

printf("%x, %x, =? %d\n", head, p, head == p ? 1 : 0);

#8


在那一行中断在我使用的IDE中代表那一行还未执行,要在它的下一行中断才得到执行这一行之后的结果.

#9


你确定 程序已经执行到p=head这句了吗?  如果没有, 那是正常的.

如果已经执行到了, 那么
怀疑你是在release模式下调试的.  
debug版执行到 p=head, p应该是NULL.

#10


你执行位置过了赋值的地方没