原因
刚好看到给main传递参数,书上(C++Primer)说“ int main(int argc, char *argv[])也可以写成 int main(int argc, char **argv),argv 是 C风格字符串数组 ”。
然后各种别扭,感觉有什么没弄明白(最怕这样,不知道自己不知道什么)。
于是敲敲写写,当敲到 char c='x'; char *pc=&c; 的时候突然回过神来,原来char **argv=&pc; 的时候,argv 可不是 C风格字符串数组 !
char **argv 直接理解的话就是char 指针的指针,跟 C风格字符串数组 未必完全一致!
就是说,如果是char **argv ,那我完全可以传入上面的argv(&pc),那编译器会怎么处理?
char *s1 = "abc"; // 指向字符串字面值常量的指针,常量不可修改,所以其实是const char *s1 。疑问:const怎么能赋值给非const? char s2[] = "abc"; // 数组!内容可变,但地址及长度不可变,所以其实是char *const s22=&s2。 char *const s22=s2; // char *const s23=&s2; //被禁止了 char s3[]={'a','b','c','