在 C 中获取数组中一个结构体的地址

问题描述 投票:0回答:1

我有一个结构数组。

typedef struct { int a; int b } s;

typedef struct { int a; int b; } s;
static const s info[2] = {
  {.a=1, .b=2}, {.a=3, .b=4 }};

我也有一个指向这种结构的指针:

static s *thisInfo;

我想设置

thisInfo
指向数组
info
的一个元素。 这是在嵌入式处理器上,我希望
s
const
,以便它保留在闪存中。

thisInfo = &info[0];

但是会收到消息“警告:赋值从指针目标类型 [-Wdiscarded-qualifiers] 中丢弃'const'限定符”

arrays c pointers data-structures
1个回答
0
投票

由于

info
的元素属于
const s
类型,因此指向此类元素的指针应该属于
const s*
类型。 所以你应该声明

static const s *thisInfo;`

注意这并不意味着

thisInfo
本身是 const;您仍然可以自由修改指针。 但你不能修改它指向的对象。

thisInfo = &info[0]; // ok
thisInfo = &info[1]; // ok
thisInfo->a = 0;   ; // error
© www.soinside.com 2019 - 2024. All rights reserved.