回复 13楼 dengluoy
我的问题不是在free上面 书上的free是希望读者养成释放内存的习惯 测试中去掉free似乎没影响
我的问题是在*p++=NULL这行中 他在独立的函数 str_out中是不会有问题的 在main()中则会有问题
(以下个人观点基于第一个代码)
我对我的指针数组p的理解 : p中包含三个指针 p[0] p[1] p[2] 赋值后指向 a,b,c字符串的首地址
调用函数的时候传入p 从而str_out函数中的p数组的地址和main中的p是一样的
第一次循环的时候 p指向p[0] *p则是读取p[0]中存储的数据 即字符串a的首地址 printf在接收到字符串首地址之后便能打印出该字符串
*p++=NULL的作用是将现在的p中的存储数据设为NULL 然后将p递增从而指向p[1](或p[2]) 通过下一次的循环的*p能够读取b(或c)字符串的首地址
由此我的第一个代码在我的环境中是可以编译执行的
我的问题出在了第二个代码中
以上是个人观点 有问题欢迎指出 本人也只是小白
BTW: 没装VS,所以不能测试 不好意思