采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,我又来了, 能问你一个我书上看到的问题吗,选自《大话数据结构》5.7.3,如上图, 他那个next数组,应该是我调用的方式不对吧,感觉怪怪的, get_next(string, &next);方法之前,string还有值,调完以后,就变成0x100000000了,方法里面貌似也没有去修改string指针那边的内存,
main 函数的代码也是书上的吗?不会吧。。。int *next 需要的是一个数组,你给人家传了一个整型变量的地址,当成数组,可以简单认为是传了一个大小为 1 的数组,必然会导致数组越界。
一般来说,stack 的内存应该是倒着分配的,next[1] 就是 next 变量所在内存之后的内存,正好是 char * 这个字符串的地址。。。。所以字符串就被非法修改了。。。你试试看是不是这样。。
非常感谢!
来了来了, main函数不是书上的 我以为,传一个指针,然后用指针加 [数字],就可以访问 指针 后面以该类型为步长 相应的偏移量位置的数据来着 --------------------- 刚才又试了一下,除了用指针加上一个值,来到达自己想访问的地址,确实也可以直接用指针后面加方括号的形式,来到达自己想要的地址位置。应该是语义上有区别。 就是传参时候,一个参数又有问题,会影响另一个变量,感觉有点 奇怪
这有啥奇怪的,我在课里面有一节讲到过这块儿。C 语言本来就是可以直接操作内存,内存又就是一个地址,我们甚至可以通过一个整数来强转成指针去访问内存,因此很容易写出不安全的代码。
登录后可查看更多问答,登录/注册
如果通向大牛的道路有捷径,那就是先学好C语言
1.6k 3
1.1k 4
1.3k 9
1.6k 1
864 2