字符串问题

来源:7-1 指针基础【摸清本质带你爱上指针】

十三山入秋

2021-01-26

图片描述

老师您好,我又来了,
能问你一个我书上看到的问题吗,选自《大话数据结构》5.7.3,如上图,
他那个next数组,应该是我调用的方式不对吧,感觉怪怪的, get_next(string, &next);方法之前,string还有值,调完以后,就变成0x100000000了,方法里面貌似也没有去修改string指针那边的内存,

写回答

1回答

bennyhuo

2021-01-27

main 函数的代码也是书上的吗?不会吧。。。int *next 需要的是一个数组,你给人家传了一个整型变量的地址,当成数组,可以简单认为是传了一个大小为 1 的数组,必然会导致数组越界。

一般来说,stack 的内存应该是倒着分配的,next[1] 就是 next 变量所在内存之后的内存,正好是 char * 这个字符串的地址。。。。所以字符串就被非法修改了。。。你试试看是不是这样。。

1
6
十三山入秋
回复
bennyhuo
确实不安全
2021-01-27
共6条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程