关于C语言传参问题

比如有一个函数fun(char*str){}(str是在主函数中定义在栈中的字符串)为什么fun中不能执行str++自增减操作?str不是相当于重新定义了一个指针吗?... 比如有一个函数fun(char *str){}(str是在主函数中定义在栈中的字符串)
为什么fun中不能执行str++自增减操作?str不是相当于重新定义了一个指针吗?
展开
 我来答
kaixingui2012
2015-09-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6129万
展开全部
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]; //这样不确定一定成功
shine123荣
2015-09-09 · 超过17用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:27.9万
展开全部
str不是指针,是一个参数字符而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式