void fun1(char a[ ]){....}
void fun2(char *w){
....
fun1(w);
.....
}
请问为什么这种形式的传参是可行的?不是说C语言中数组名可以复制给指针表示地址, 但是却不能赋给给数组名,它是一个常量类型,所以不能修改么?
c语言 字符串传参问题
答案:2 悬赏:50 手机版
解决时间 2021-03-17 15:17
- 提问者网友:暮烟疏雨之际
- 2021-03-16 18:08
最佳答案
- 五星知识达人网友:神也偏爱
- 2019-06-17 14:45
这种形式的传参是可行的。
因为void fun1(char a[ ]){....}实际上是等价于void fun1(char *a){....}
C语言中数组名可以复制给指针表示地址, 但是却不能赋给数组名,因为数组名是一个常量类型,所以不能修改。确实这样,但在形参传值时却是一个例外。
因为void fun1(char a[ ]){....}实际上是等价于void fun1(char *a){....}
C语言中数组名可以复制给指针表示地址, 但是却不能赋给数组名,因为数组名是一个常量类型,所以不能修改。确实这样,但在形参传值时却是一个例外。
全部回答
- 1楼网友:野味小生
- 2020-04-15 06:20
问问团队uranus 的回答依然没有解决这个问题,实际上在c语言里面的string类型依然是用字符数组来实现的,所以在这里用string来定义和用字符数组定义是一个道理……这里你如果在用之前并不知道需要多少的存储空间可以通过定义字符指针的的形式来实现……在用的时候通过动态分配内存,用多少分配多少就可以了……不用想的那么复杂……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯