打印指针数组,指针数组赋值

c 经验太少,请教


typedef struct f
{
    uint8_t *data[8];
    
    int width, height;
} f;

怎么打印这个结构体中 data 中的每个值?


我怎么能将上面的这个结构体的 data 有一些值时 赋值到下面的变量?

uint8_t d[8];
阅读 4.1k
2 个回答
#include <stdio.h>
#include <stdint.h>

int main()
{
    // 一定要有实际的数据空间才可以保存数据
    // 所以这里定义一个 uint8_t 数组,可以保存 8 个 uint8_t
    uint8_t values[8];

    // 这个代替结构体中的那个成员,是一个道理(懒得写结构体)
    // 这里声明的是是一个 uint8_t 指针的数组,可以保存 8 个 uint8_t 指针
    uint8_t *data[8];

    // 这个循环可以拆成两个来看,
    // 只看 values[i] = i; 就是给上面的 values[8] 赋值,把数据存进去
    // 只看 data[i] = &values[i],就是给 data[8] 赋值,把数据的地址存进去
    int i;
    for (i = 0; i < 8; i++)
    {
        values[i] = i * 2;
        data[i] = &values[i];
    }

    // 如果有一个数组空间,需要获取上面 data 中的数据
    uint8_t targets[8];
    // 遍历
    for (i = 0; i < 8; i++)
    {
        // data[i] 可以拿到数据的地址(指针),
        // 再用 * 运算把其中的值取出赋给 targets[i]
        targets[i] = *data[i];
    }

    // 最后挨个打印出来人眼验证一下
    for (i = 0; i < 8; i++)
    {
        printf("%d\n", targets[i]);
    }
}

没太理解你想要表达什么

#include <stdio.h>
#include <stdint.h>

typedef struct {
    int width;
    int height;
    uint8_t* data;
} F;

int main()
{
    F f;
    f.data = realloc(NULL, sizeof(uint8_t)*8);
    uint8_t* start = f.data;
    for(int i=0; i<8; i++) {
        *start++ = i+1;
    }
    for (int i=0; i<8; i++) {
        printf("%d\n", *(f.data+i));
    }
    return 1;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏