- 论坛徽章:
- 1
|
请教高手!!!
这样改一下就对了:
/******************************************************/
/* PutIntValue(Value) */
/* GetIntValue() */
/******************************************************/
#include <stdlib.h>;
#include <stdio.h>;
#include <string.h>;
#define VARARRAYNUM 2
typedef struct {
void *pb;
short int cb;/*pb*/
char kind;
}VAR_POOL_INF;
VAR_POOL_INF VarPoolInf[20]={{"abcd", 5, 'C'},
{"123.456", 6, 'D'},
{"xyzd iad ", 13, 'C'},
{"0987", 5, 'C'},
{NULL, 2, 'I'},
{"123.321", 15, 'D'},
};
char *GetIntValue(int VarNo, int arrayno);
int PutIntValue(int VarNo, int Value, int arrayno);
void main( void )
{
PutIntValue(2,2345,0);
printf("%s\n", GetIntValue(2,0));
}
int PutIntValue(int VarNo, int Value, int arrayno)
{
VAR_POOL_INF *tmp;
tmp=VarPoolInf+VarNo*VARARRAYNUM+arrayno;
tmp->;pb= new int;
// 老大!Value 是形式参数,它的地址怎么能可靠呢?
memcpy( tmp->;pb, &Value, sizeof(int) );
tmp->;cb=sizeof(int);
return 0;
}
char *GetIntValue(int VarNo, int arrayno)
{
VAR_POOL_INF *tmp;
static char rt[20];
// 局部变量也敢回传?胆子不小呀!
int *value;
tmp=VarPoolInf+VarNo*VARARRAYNUM+arrayno;
//memcpy( value, tmp->;pb, tmp->;cb );
value = (int *)tmp->;pb;
sprintf(rt, "%d", *value);
// 起先倒是对的,可是怎么又改错了?
delete tmp->;pb;
//千万不能忘了这一句
return rt;
}
批注:回家好好学学 C 的语法吧! |
|