gpt4 book ai didi

c - 结构数组指针

转载 作者:行者123 更新时间:2023-12-01 15:06:11 25 4
gpt4 key购买 nike

好的,我有这个代码:

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

#define ARR_SIZE 5

struct mys
{
double first;
unsigned long second;
char str[10];
};

int main(int argc, char** argv)
{
size_t i = 0;
struct mys thes[ARR_SIZE] =
{
{1.1, 1, "First"},
{2.2, 2, "Second"},
{3.3, 3, "Third"},
{4.4, 4, "Fourth"},
{5.5, 5, "Fifth"}
};//load array of structures with values

for (; i < ARR_SIZE; ++i)
fprintf(stdout, "second->%lu\n", thes[i].second);//loop through array thes and print element second

return (EXIT_SUCCESS);
}

现在,我想获取第 0 个元素 thes 中名为 second 的元素的地址,然后使用它遍历数组 thes 并打印每个第二个元素。

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

#define ARR_SIZE 5

struct mys
{
double first;
unsigned long second;
char str[10];
};

int main(int argc, char** argv)
{
size_t i = 0;
unsigned long * ptr = NULL;//pointer to unsigned long
struct mys thes[ARR_SIZE] =
{
{1.1, 1, "First"},
{2.2, 2, "Second"},
{3.3, 3, "Third"},
{4.4, 4, "Fourth"},
{5.5, 5, "Fifth"}
};

//first loop
for (; i < ARR_SIZE; ++i)
fprintf(stdout, "second->%lu\n", thes[i].second);

ptr = &thes[0].second;//get the address of the second element of the zero'th array structure and store it in ptr

// Now I want to use the above pointer ptr to loop through the array thes and display the second element like I did above, but I can't manage to do that.
//The output of this loop should be the same as the first loop

return (EXIT_SUCCESS);
}

所以,我已经实现了指针,但是我在为第二个循环编写代码时遇到了问题。感谢您的帮助。

最佳答案

for (; i < ARR_SIZE; ++i)
fprintf(stdout, "second->%lu\n", *( unsigned long * )(( char * )ptr + i * sizeof( struct mys ) ));

关于c - 结构数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20654851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com