繁体   English   中英

C数组中的增量指针

[英]Incrementing pointers in C arrays

我正在尝试了解以下程序。 具体来说, cur_name的定义和printf语句中cur_age的指针的增量。

*(cur_age + i)必须索引数组中的每个整数,但是我希望它指向内存中的连续地址,而不是给定int为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;
}

这就是在C中定义指针算术的方式。递增指针通常被认为是单位递增,其中一个单位是所指向类型的sizeof()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM