首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

急迫:怎么利用函数的参数传字符串

2012-02-07 
急迫:如何利用函数的参数传字符串?现在有一个十分简单的函数如下:intgetValue(void*buffer,IU32*vLength){

急迫:如何利用函数的参数传字符串?
现在有一个十分简单的函数如下:
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);几乎是这种用法的特征。

热点排行