我想我弄清楚问题是什么:C很臭。它以一种方式处理本地声明的指针,将指针作为参数另一种处理。这是对我几天前发布的question的回应。我试图在那里发布,但程序不合适。
{{1}}
答案 0 :(得分:3)
我不确定你的问题是什么,但是这段代码可能不符合你的要求:
printf("main Pointer to struct." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, b->useless1);
printf("index: %d useless2: %d" EOL, i, b->useless2);
b++;
}
printf(EOL);
printf("main Index into array of structures." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, b[i].useless1);
printf("index: %d useless2: %d" EOL, i, b[i].useless2);
}
printf(EOL);
第一个循环会更改b
的值,因此第二个循环不会在您认为的位置开始。
考虑这样的事情:
type1* bOrig = b; // store the original value
printf("main Pointer to struct." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, b->useless1);
printf("index: %d useless2: %d" EOL, i, b->useless2);
b++;
}
printf(EOL);
b = bOrig; // restore the original value
printf("main Index into array of structures." EOL);
for (int i=0; i<count; i++)
{
printf("index: %d useless1: %d" EOL, i, b[i].useless1);
printf("index: %d useless2: %d" EOL, i, b[i].useless2);
}
printf(EOL);