0
我收到一个像这样的指针数值:0xbfe0e6ac
它可能设置int foo
例如值为0xbfe0e6ac
这是内存中的另一个int值吗?如何通过您的索引在RAM上设置变量值?
我scenare:
我试图执行功能从阵列穿过指针的值(如上面的例子)作为参数得到下一个索引。
例如:
char * a = "baa";
char* b = "foo";
printf("%c", cgetnext(&a)); // b
printf("%c", cgetnext(&a)); // a
printf("%c", cgetnext(&b)); // f
printf("%c", cgetnext(&b)); // a
,我可以看到这样做的单一的方法是:在cgetnex()
保存数组传递等参数成阵列,并且每个呼叫的指针,检查是否被用作paramater通过阵列之前,并获得它的信息,如lasindexused和指针值到RAM中。 这里是我的代码:
#include <string.h>
#include <stdlib.h>
typedef struct { int pLocation; int lastIndex; } POINTERINFORMATION;
int __myIndex;
POINTERINFORMATION pointersLocations[256];
int pointersLocationsLength;
char * temparr = NULL;
__myIndex = pointersLocationsLength = 0;
int
plAdd (int p)
{
if (plLen >= sizeof(pointersLocation)) {
return -1;
} else {
pointersLocation[pointersLocationsLength].pLocation = p;
pointersLocation[pointersLocationsLength].lastindex = 0;
pointersLocationsLength ++;
return pointersLocationsLength;
}
}
int
getPointer (int p, POINTERINFORMATION ** out)
{
int i;
for (i = 0; i < pointersLocationsLength; i++)
{
if(pointersLocation[pointersLocationsLength].pLocation == p)
{
*out = makevariablefromponiter(pi.pLocation);
return 1;
}
}
return 0;
}
char
cgetnext(char * arr)
{
char * myarr;
const size_t size = sizeof(char *) + 1;
myarr = malloc(size);
if (NULL == arr){
POINTERINFORMATION * pi;
if (getPointer(p, &pi))
{
__myIndex = pi.lastindex;
myarr = makevariablefromponiter(pi.pLocation);
}
} else {
myarr = strdup (arr);
}
if (strlen(myarr) == __myIndex) {
return '\0';
} else {
__myIndex ++;
temparr = malloc(size);
temparr = strdup(myarr);
return myarr[__myIndex - 1];
}
}
我希望这对你很清楚。任何帮助非常感谢。提前致谢。
流,非常感谢! :) – Jack 2012-03-07 16:54:38
另一个问题:是一个'int'足以保存指针索引值或我应该使用'长'? – Jack 2012-03-07 17:11:44
@Jack'int'应该足够大 – 2012-03-07 17:57:53