c++字符串问题。请大神指教!

我的工程是一个dll工程我想传出一个字符串参数给调用者,在程序中我的参数是一个char*str类型的我发现一个很奇怪的问题:str=“1234”--这个可以正确传出但是我... 我的工程是一个dll工程
我想传出一个字符串参数给调用者,
在程序中我的参数是一个char* str类型的
我发现一个很奇怪的问题:
str=“1234”--这个可以正确传出
但是我用的是变量
char strA[4]={'1','2','3','4'}
str=strA;--这样传出就乱码或者根本传不出去呢?
不明白请用的缘由 啊!!
这个请大神帮个忙看看!!
展开
 我来答
林枫_jacky
推荐于2016-07-07 · 超过25用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:21.5万
展开全部
1str=“1234”:str是一个指针,它指向了静态区域,“1234”作为一个常数,被存放在静态区域,可以全局调用,程序运行期间,它的值不会变化。
2char strA[4]={'1','2','3','4'} 本句话,实际上是在栈空间里为strA赋值,栈空间内的变量属于局部变量,当函数执行完毕后,空间会被释放。所以这些值是无法传递出去的。
3 其实,这种情况下,大部分人会使用动态内存分配。
可将 char strA[4]={'1','2','3','4'}修改为
strA = (char *)malloc(sizeof(char * len));//len是你想存放的字符串的长度,包括字符串末尾的结束符。
一个简单的函数示例如下
void fun1(char * *str)
{
*str = (char *)malloc(sizeof(char * 128));
strcpy(*str,"hello word");
}
int main()
{
char *str;
fun1(&str);
printf("字符串:%s\n",str);
free(str);//释放申请的内存空间
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式