关于C语言传参问题
比如有一个函数fun(char*str){}(str是在主函数中定义在栈中的字符串)为什么fun中不能执行str++自增减操作?str不是相当于重新定义了一个指针吗?...
比如有一个函数fun(char *str){}(str是在主函数中定义在栈中的字符串)
为什么fun中不能执行str++自增减操作?str不是相当于重新定义了一个指针吗? 展开
为什么fun中不能执行str++自增减操作?str不是相当于重新定义了一个指针吗? 展开
2个回答
展开全部
void fun( char *str )
{
while( *str != '\0' )
{
printf("%c", *str);
str++; //这样可以用啊!
}
}
更多追问追答
追答
char s[len]; //这个定义有问题!一、s是局部变量,在子函数结束后,s变会被释放 二、这种动态动态数组,只有在C99以后的版本或C++中才支持;
正确写法为:
增加头文件:
#include
或
#include
修改代码:
char *s;
s=(char *)malloc(len) ; //动态分配内存,这样只要没有调用free()命令,内存就不会被释放
-----------------
如果你用的是C99或C++,可以定义成静态变量试试(不建议这样使用)
static char s[len]; //这样不确定一定成功
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询