急迫:如何利用函数的参数传字符串?
现在有一个十分简单的函数如下:
int getValue(void* buffer, IU32* vLength)
{
* vLength = 8;
buffer = "hello ";
return 1;
}
void main()
{
char devStr[] = "Device/ ";
int vLength=0;
char *buffer;
buffer = (char *)malloc(sizeof(deviceStr));
int error = getValue(buffer, &vLength);
}
结果发现通过调用函数getValue()后,vLength为更改后的值8,而buffer的值并没有赋为hello,所以想请各位大虾帮帮忙,如何将buffer的值传出来,且保持函数int getValue(void* buffer, IU32* vLength)的函数声明格式,内容可以变。
[解决办法]
int getValue(void** buffer, IU32* vLength)
{
* vLength = 8;
*(char**)buffer = "hello ";
return 1;
}
void main()
{
char devStr[] = "Device/ ";
int vLength=0;
char *buffer;
buffer = (char *)malloc(sizeof(deviceStr));
int error = getValue(&buffer, &vLength);
}
[解决办法]
strcpy(buffer, "hello ");
[解决办法]
Kenmark(fenix) 正解
buffer是一个实实在在的变量,大小4字节,直接传递给getValue的话,会被压栈成为局部变量,此时对他做的一切修改函数返回后将不复存在。
要改变函数外的某一个变量值,需要让函数访问到那个变量,有两种方法
1.访问全局变量
2.传递该变量的地址
如int getValue(void** buffer, IU32* vLength)
使用时正规写法是int error = getValue((void **)&buffer, &vLength);几乎是这种用法的特征。