又是c指针有关问题。
又是c指针问题。。。大家看看下面这段代码为什么报错: error C2664: “Fun”: 不能将参数 1 从“char (*__w64 )[
又是c指针问题。。。
大家看看下面这段代码为什么报错:
error C2664: “Fun”: 不能将参数 1 从“char (*__w64 )[5]”转换为“char **”
C/C++ code#include <stdio.h>void Fun(char **str){ (*str)++;}int main(){ char str[5]="abcd"; Fun(&str); printf("After change,the string is : %s\n",str); return 0;}
[解决办法]Fun((char **)&str);
[解决办法][解决办法]数组的地址不是char **类型,所以要(char **)&一下
[解决办法]指针是有类型的。你的str是数组的首地址,等价于&str[0];所以str是char型指针,但str同时是常量指针,不能进行str++这种操作。(数组名都不能进行这种操作),你取str的地址传给了形参,这个是没问题的。但在fun函数中的形参str是实参str的拷贝,所以函数体中的*str实际上就和main中的str是同一个量,即一个常量指针,你在fun中进行(*str)++肯定就不对了。
这就类似于: char* const a;a++;这种用法一样。是错误的。
你可以测试一下这种代码: int a[2];a++;肯定是错的。