我试图理解下面的程序。具体来说,定义cur_name
以及指针的递增cur_age
在 printf 语句中。
*(cur_age + i)
必须索引数组中的每个整数,但我希望它指向内存中的连续地址,而不是给定 int 的下一个整数是 4 个字节?即为什么不是 i+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;
}
这就是 C 语言中指针算术的定义方式。增加指针始终被认为是单位增量,其中一个单位是sizeof()
被指向的类型。
旁注 - 虽然 int 是commonly大小为 4 字节,这并不是一成不变的。它们可能更小(2 个字节)或更长(实际上没有限制)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)