为了账号安全,请及时绑定邮箱和手机立即绑定

有关指针传入函数的问题

有关指针传入函数的问题

C
稳做王者 2016-12-29 00:09:04
#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的指向往后移了两个字符,指向了字符串的第三个字符,并没有修改原数据。                            

查看完整回答
反对 回复 2016-12-29
?
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;
}


查看完整回答
反对 回复 2016-12-29
  • 望远
    望远
    地址已经传过去了,只是调用函数里面没有修改字符数据哦。
  • 望远
    望远
    地址已经传过去了,只是调用函数里面没有修改字符数据哦。
  • 望远
    望远
    地址已经传过去了,只是调用函数里面没有修改字符数据哦。
点击展开后面2
  • 3 回答
  • 1 关注
  • 1143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信