快捷导航

有关指针传入函数的问题

#includevoid func(char *c){        c=c+2;}void main(){        char *s="mincomputer";        func(s);        puts(s);}这个程序的输出的为什么还是mincomputer而不是incomputer呢?

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

#includevoidfunc(char*c){*c=*(c+2);}voidmain(){char*s="mincomputer";func(s);puts(s);}ps这才是你想要的结果,c=c+2;仅仅是将指针变量c的指向往后移了两个字符,指向了字符串的第三个字符,并没有修改原数据。
回复

使用道具 举报

很明显不会改变的,
在 main函数中,你定义了 char * 类型
但是你在 func函数的参数类型中 也定义了 char * 类型
传参数时,仅仅是复制一份,并未把地址传过去
修改后代码如下
#includevoidfunc(char**c){        *c=*c+1;}intmain(){        char*s="mincomputer";        func(&s);        puts(s);        return0;}
回复

使用道具 举报

可能感兴趣的问答

发新帖
TA的信息
  • 会员所属: 注册会员
  • 认证信息: 邮箱认证手机认证
  • 微信访问
  • 手机APP