我搞了个函数
void func(char *str)
{
char instr[10]="nihao";
str=instr;
}
然后想通过调用这个函数把字符串放到str里带出来
main()
{
char str[10];
func(str);
printf("%s",str);
}可为什么不行呢 windows很多api不是这样干的吗 他们是如何做到的呢
void func(char *str)
{
char instr[10]="nihao";
str=instr;
}
然后想通过调用这个函数把字符串放到str里带出来
main()
{
char str[10];
func(str);
printf("%s",str);
}可为什么不行呢 windows很多api不是这样干的吗 他们是如何做到的呢
生命周期在fun结束的时候就玩完了。
你str现在指的地方,已经没有了
{
char instr[10] = "nihao";
strcpy(str, instr);
}
func中的str是一个指针,在栈上,不是main里的str哦!str=instr只是改变了栈上的这个值,而main里的str没变。
void func(char *str, size_t size)
{
char instr[10]="nihao";
strcpy_s(str, size, instr);
}main()
{
char str[10];
func(str, sizeof (str) / sizeof (str[0]));
printf("%s",str);
}
{
char * instr ="nihao"; //你这么玩就OK了
str=instr;
}