#include<stdio.h>
void func(char *c)
{
c=c+2;
}
void main()
{
char *s="mincomputer";
func(s);
puts(s);
}
这个程序的输出的为什么还是mincomputer而不是incomputer呢?
3 回答
已采纳
望远
TA贡献1017条经验 获得超1032个赞
#include<stdio.h> void func(char *c) { *c=*(c+2); } void main() { char *s="mincomputer"; func(s); puts(s); }
ps这才是你想要的结果,c=c+2;仅仅是将指针变量c的指向往后移了两个字符,指向了字符串的第三个字符,并没有修改原数据。
Yexiaomo
TA贡献152条经验 获得超157个赞
很明显不会改变的,
在 main函数中,你定义了 char * 类型
但是你在 func函数的参数类型中 也定义了 char * 类型
传参数时,仅仅是复制一份,并未把地址传过去
修改后代码如下
#include<stdio.h> void func(char **c) { *c=*c+1; } int main() { char *s="mincomputer"; func(&s); puts(s); return 0; }
- 3 回答
- 1 关注
- 1143 浏览
添加回答
举报
0/150
提交
取消