怎么通过函数函数参数 传递字符串指针
如何通过函数函数参数 传递字符串指针?
我搞了个函数
void func(char *str)
{
char instr[10]="nihao";
str=instr;
}
然后想通过调用这个函数把字符串放到str里带出来
main()
{
char str[10];
func(str);
printf("%s",str);
}可为什么不行呢 windows很多api不是这样干的吗 他们是如何做到的呢
------解决方案--------------------
char instr[10]="nihao";
生命周期在fun结束的时候就玩完了。
你str现在指的地方,已经没有了
------解决方案--------------------
void func(char* str)
{
char instr[10] = "nihao";
strcpy(str, instr);
}
func中的str是一个指针,在栈上,不是main里的str哦!str=instr只是改变了栈上的这个值,而main里的str没变。
------解决方案--------------------
我搞了个函数
void func(char *str)
{
char instr[10]="nihao";
str=instr;
}
然后想通过调用这个函数把字符串放到str里带出来
main()
{
char str[10];
func(str);
printf("%s",str);
}可为什么不行呢 windows很多api不是这样干的吗 他们是如何做到的呢
------解决方案--------------------
char instr[10]="nihao";
生命周期在fun结束的时候就玩完了。
你str现在指的地方,已经没有了
------解决方案--------------------
void func(char* str)
{
char instr[10] = "nihao";
strcpy(str, instr);
}
func中的str是一个指针,在栈上,不是main里的str哦!str=instr只是改变了栈上的这个值,而main里的str没变。
------解决方案--------------------
- C/C++ code
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); }
------解决方案--------------------
你只是改变了str指针的指向,并没有在函数中实质性的改变str指向的值