有关指针传入函数的问题
#include<stdio.h>
void func(char *c)
{
c=c+2;
}
void main()
{
char *s="mincomputer";
func(s);
puts(s);
}
这个程序的输出的为什么还是mincomputer而不是incomputer呢?
稳做王者
浏览 1145回答 3
3回答
-
望远
#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
很明显不会改变的, 在 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;
}
打开App,查看更多内容