我正在尝试了解以下程序。具体来说,是cur_name
的定义以及printf语句中cur_age
指针的递增。
*(cur_age + i)
必须索引数组中的每个整数但我希望这指向内存中的连续地址而不是给定整数的下一个整数是4个字节?即为什么不是我+ 4
#include <stdio.h>
int main(int argc, char *argv[])
{
int ages[] = {23, 43, 12, 89};
char *names[] = {"Anne", "Kay", "Joe", "Pete"};
int count = sizeof(ages) / sizeof(int);
int *cur_age = ages;
char **cur_name = names;
for (int i = 0; i < count; i++) {
printf("%s is %d years old.\n", *(cur_name + i), *(cur_age + i));
}
return 0;
}
答案 0 :(得分:6)
这就是如何在C中定义指针算术。递增指针始终被认为是以单位递增的,其中一个单位是指向的sizeof()
类型。
旁注 - 虽然int的通常大小为4个字节,但这并不是一成不变的。它们也可能更小(2个字节)或更长(实际上不限制)。