增加C数组中的指针

Cat*_*azz 1 c pointers

我想了解下面的程序.具体来说,是printf语句中cur_name指针的定义 和递增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;
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*eyA 6

这是指针算术简单地在如何限定C.递增指针总是认为在单位被递增,其中一个单元是所述sizeof()类型的被指向.

旁注 - 虽然int的大小通常是 4个字节,但这并不是一成不变的.它们也可能更小(2个字节)或更长(实际上不受限制).