猿问

有关指针传入函数的问题

#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
我要回答