小编Rub*_*ozo的帖子

如何在不使用++运算符的情况下直接移动到指针位置?

我正在使用指向结构的指针.我想知道是否可以直接移动到特定位置而不使用++运算符.

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE 10

struct dummy{
    int id;
    char buffer[10];
};

typedef struct dummy dummy_struct;

int main()
{
    int i=0;
    dummy_struct *ds = malloc(sizeof(dummy_struct)*ARRAY_SIZE);
    dummy_struct *iterator = ds;

    for(i=0;i<ARRAY_SIZE;i++)
    {
        iterator->id = i;
        sprintf(iterator->buffer,"%d",i);
        iterator++;
    }

    iterator = ds;

    for(i=0;i<ARRAY_SIZE;i++)
    {
        printf("%d:%s:%p\n",iterator->id,iterator->buffer,iterator);
        iterator++;
    }

    // I want to access directly to 5th position
    iterator = ds + (sizeof(dummy_struct)*5);
    printf("5th position %d:%s:%p\n",iterator->id,iterator->buffer,iterator);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个说法

iterator = ds + (sizeof(dummy_struct)*5);
Run Code Online (Sandbox Code Playgroud)

不管用.我将不胜感激任何建议.

c pointers operators pointer-arithmetic

9
推荐指数
2
解决办法
2861
查看次数

标签 统计

c ×1

operators ×1

pointer-arithmetic ×1

pointers ×1