char (*argv[3])[256];
char exename[256]="mpeg2enc";
char parname[256]="test.par";
char outname[256]; argv[0]=&exename;
argv[1]=&parname;
argv[2]=&outname;argv[3]是一个数组,数组元素是指针,指向长度是256的字符数组。
下面是赋值,但是如果把赋值语句修改为:argv[0]=exename,则编译有警告:
警告 3 warning C4047: “=”: “char (*)[256]”与“char *”的间接级别不同 觉得不理解,数组名不就是地址吗?为什么还需要取地址&?从程序跟踪的结果看,修改前后argv的值都是一样的。请教。

解决方案 »

  1.   

    --------------指针数组--------------------
    int *p[10];//指针数组,含有10个指针元素也就是说每一个元素都是指针
                
    --------------数组指针--------------------
    int (*p)[10];//数组指针,这个指针可以用来指向含有10个元素的整数数组
      

  2.   

    argv是一个指针数组,包含3个元素,每个元素是一个char(*)[256],是一个指向char[256]的指针。
    因此要加&