求大虾指导一个指针数组的问题
程序代码:
#include <stdio.h> #include <stdlib.h> void str_out(char *p[],int n); int main(void) { char *p[3]={NULL}; char a[]="test1"; char b[]="test2"; char c[]="test2"; p[0]=a; p[1]=b; p[2]=c; str_out(p,3); return 0; } void str_out(char *p[],int n) { int i=0; for( ;i<n;i++ ) { printf("%s\n",*p); free(*p); *p++=NULL; } return; }以上代码编译运行后没有问题.
程序代码:
#include <stdio.h> #include <stdlib.h> int main(void) { char *p[3]={NULL}; char a[]="test1"; char b[]="test2"; char c[]="test2"; p[0]=a; p[1]=b; p[2]=c; int i=0; for( ;i<3;i++ ) { printf("%s\n",*p); free(*p); *p++=NULL; //在该句将会报错 mingw提示: 错误:自增操作数必须是左值(左值:C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量) } return 0; }
将str_out的代码放到main()中就会编译出错
环境是editplus+mingw
我个人的理解在 15L 由于不想让帖子太长 所以就给个链接 抱歉:https://bbs.bccn.net/viewthread.php?tid=415141&extra=&page=2#pid2313352
说明一下:
关于那些看起来很烦人的 a b c 的问题
我只是为了测试一下代码功能
书上的str_out包含于一个程序中
程序的功能是 : 读取命令行的多行输入 让后对多行语句进行字母排序并显示
我将str_out单独挑出来实验一下 所以添加 a,b,c 省去前面的读取命令行输入的代码 望大家可以理解
附上Editplus的编译&运行结果:
第一个代码
第二个代码
[ 本帖最后由 sisox 于 2013-6-14 02:13 编辑 ]