在C函数中传递Char指针

时间:2018-03-23 14:42:26

标签: c pointers char

我想知道为什么以下程序的预期输出不是“hai”

#include<stdio.h>
#include<conio.h>

void first(char*);
void first(char *s)
{
  printf("%u",s);
  s="hai";
}

int main()
{
 clrscr();
  char *t ="welcome";
  printf("%u",t);
   first(t);

 printf("%s",t);
  getch();
  return 0;
}

我得到的输出是Welcome而不是Hai。

如果有人可以详细解释,那会更有帮助吗?

1 个答案:

答案 0 :(得分:1)

C中的所有内容都按值传递。包括指针。所以你已经将一个内存地址(指针)传递给函数,然后重新分配它以指向不同的内存位:指向你的&#34; hai&#34;串。原始指针t仍然高兴地指向原始字符串&#34; welcome&#34;。 当您通过t传递t按值指向的内存地址时:该值已复制到参数/变量s