c 指针地址 突然改变_C语言指针关于指针名称以及所指变量的认识

本文探讨了C语言中指针地址在函数调用时的不变性,通过一个例子说明了即使在函数内部改变了指针所指向的值,也不能改变其在调用函数外部的指向位置。作者指出,虽然指针所引用的数据可以在函数内部修改,但指针本身在函数间的传递是按值传递,因此不能直接改变其指向。
摘要由CSDN通过智能技术生成

几个月没有写博客,我认为这代表了几个月以来我的编程技术没有进步。

这次的指针问题其实是我上个月就拖下来的问题,我以为我懂了,其实我没有。

183f43e26d6f037c2d625b174ceba721.png

代码如上。

目的其实是在一列entry的最前面再加一个entry。其实我知道有更简单的方法。(然而其实代码已经很简单了)

原代码(错误代码如下)

5e50cbe22000fc03cdbc8033cf4eb544.png

当代码header = element放在insertEntry函数定义的最后一行时,main函数中的header并不会改变。指针在函数中可以改变的是指针所指地址变量的值,比如header -> value , header -> next。这些是可以被改变的(在main中被改变),而在main以外的函数中改变header所指向的位置,并不会改变main函数中header所指向的位置(the value of the pointer is copied into the formal parameter when the function is called. Therefore, any change made to the formal parameter by the function does not affect the pointer that was passed to the function. Although the pointer cannot be changed by the function, the data elements that the pointer references can be changed!(Stephen G. Kochan, Programming in C)).当时读教材里的这句话感到似懂非懂,但应该就是这个意思。指针指的数据可以改变,指针本身和其他传入函数的变量一样也是个copy不能改变。

下面是一个值被改变的例子:

45283965d9f22256c8ec4a790bbdfb1f.png

当第二个元素在函数内被移除,改变的是next的地址,在main函数中同样被移除。

晚上试一试可不可以用指针的指针解决这个问题。另外有一个疑问:

939f7096b7f4556a16fbc334a1abd926.png

output:

49f1ba4e31484d8595c61a2281932df8.png

为什么可以有printf(message)这种python的存在。。。

最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限!

6f0ba0cd02254bacce892ea56c0248c5.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值