C语言中的字符串(我是C语言中的新手)

C语言中的字符串(我是C语言中的新手),c,string,C,String,我是C语言的新手,所以这可能是一个愚蠢的问题,但我不知道该怎么办。这是我的问题: 为什么这个代码什么都不打印 #include <stdio.h> #include <stdlib.h> void function(char* valor); main() { char* valor; int s; valor=(char*)malloc(101*sizeof(char)); function(valor); printf("%s\n",v

我是C语言的新手,所以这可能是一个愚蠢的问题,但我不知道该怎么办。这是我的问题:

为什么这个代码什么都不打印

#include <stdio.h>
#include <stdlib.h>


void function(char* valor);

main()
{
char* valor;
int s;

    valor=(char*)malloc(101*sizeof(char));
    function(valor);
    printf("%s\n",valor);

return 0;
}

void function(char* valor)
{

    valor="ciao";

}    
#包括
#包括
虚函数(char*valor);
main()
{
勇气;
int-s;
valor=(char*)malloc(101*sizeof(char));
功能(勇气);
printf(“%s\n”,valor);
返回0;
}
无效函数(char*valor)
{
valor=“ciao”;
}    
这是我想要的字符串吗?(“ciao”)

#包括
#包括
main()
{
勇气;
valor=(char*)malloc(101*sizeof(char));
valor=“ciao”;
printf(“%s\n”,valor);
返回0;
}

函数中的变量
valor
和main中的变量
valor
是不同的变量


当您在函数中更改
valor
的值时,main中的
valor
不会发生任何变化。

您的
函数()
将其“valor”指针的内部副本设置为指向字符串常量。
main()
堆栈中的原始副本保持不变,即垃圾(或可能为零)。

FYI:您正在分配内存并向其分配指针。然后将指针重新分配给一个静态字符串,该字符串将放弃分配的内存。内存泄漏!
#include <stdio.h>
#include <stdlib.h>

main()
{
char* valor;

    valor=(char*)malloc(101*sizeof(char));
    valor="ciao";
    printf("%s\n",valor);

return 0;
}