【发布时间】:2015-04-13 11:55:30
【问题描述】:
我正在尝试通过指针算法迭代结构数组。但是它给了我无法理解的结果。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int hours;
int minutes;
int seconds;
} Time;
void time_print(Time t)
{
printf("Time is: %d:%d:%d\n", t.hours, t.minutes, t.seconds);
}
int main(void)
{
Time *testTimePointers[2];
testTimePointers[0] = malloc(sizeof(Time));
testTimePointers[0]->hours = 11;
testTimePointers[0]->minutes = 10;
testTimePointers[0]->seconds = 9;
testTimePointers[1] = malloc(sizeof(Time));
testTimePointers[1]->hours = 7;
testTimePointers[1]->minutes = 6;
testTimePointers[1]->seconds = 5;
time_print(*(testTimePointers[0]));
time_print(*(testTimePointers[1]));
printf("=============\n");
Time *ttp_cur = NULL;
ttp_cur = testTimePointers[0];
time_print(*(ttp_cur));
ttp_cur++;
time_print(*(ttp_cur));
free(testTimePointers[0]);
free(testTimePointers[1]);
return 0;
}
结果
Time is: 11:10:9
Time is: 7:6:5
=============
Time is: 11:10:9
Time is: 0:0:0
在第二个块中,第二行应该是Time is: 7:6:5 而不是Time is: 0:0:0。
【问题讨论】:
-
ttp_cur++;指针使步长等于 sizeof(Time) 并指向任何地方。
标签: c arrays struct pointer-arithmetic