实在不理解这个数组问题
本帖最后由 爱学习520 于 2020-6-30 17:47 编辑为什么char b[]=a可以在函数通过,a是一个数组名,是个常量啊,常量不能赋值啊
对比两张图,这不是自相矛盾吗
第一图片不能通过
第二张图片可以通过 函数里面并没有执行char a[] = b啊 qiuyouzhi 发表于 2020-6-30 17:46
函数里面并没有执行char a[] = b啊
传递过程不就是在赋值吗 爱学习520 发表于 2020-6-30 17:47
传递过程不就是在赋值吗
或许编译器内部做了某些操作? 爱学习520 发表于 2020-6-30 17:47
传递过程不就是在赋值吗
传参的时候其实退化成了指针,等于说是char* a = b;
而且数组名是不可修改的左值 ,所以就会出现char a[] = b;报错
两个数组之间并不支持互相赋值的 CodingCat_k 发表于 2020-6-30 17:53
传参的时候其实退化成了指针,等于说是char* a = b;
而且数组名是不可修改的左值 ,所以就会出现char a[ ...
传参的时候其实退化成了指针,等于说是char* a = b;请问这句是在C语言哪里有说明,我想进一步看到相关内容 爱学习520 发表于 2020-6-30 17:58
传参的时候其实退化成了指针,等于说是char* a = b;请问这句是在C语言哪里有说明,我想进一步看到相关内 ...
数组作为参数时会强制退化为指针 爱学习520 发表于 2020-6-30 17:58
传参的时候其实退化成了指针,等于说是char* a = b;请问这句是在C语言哪里有说明,我想进一步看到相关内 ...
参见《C专家编程》或《C与指针》;
当然也可以自己测试出来的,比如给函数传递不同类型的参数(如:数组名,指针,指向数组的指针等等)
页:
[1]