你能声明一个地址常量但可变元素的数组吗?

Can you declare an array with constant address but mutable elements?

提问人:Klorax 提问时间:9/16/2018 最后编辑:Klorax 更新时间:11/6/2018 访问量:428

问:

C 编程语言

定义指向非常量(即可变)值的常量指针并不少见。因此,如果您不希望数组移动,但其内容会更改:

  1. 你能定义一个具有常量(常量)地址但可变元素的数组吗?
  2. 如果是,那如何?
c 阵 列 常数 内存地址 可变

评论

4赞 Some programmer dude 9/16/2018
这定义了所有非常量元素的数组。创建数组后,它位于固定位置。
1赞 paulsm4 9/16/2018
简短的回答:指针(您可以为其分配地址)和数组(无法为其分配地址)通常可以互换使用。回答你的问题:也许常量指针可能是一个很好的解决方案。详情请看这里:stackoverflow.com/questions/1143262
2赞 chux - Reinstate Monica 9/16/2018
Klorax 是“具有常量 (const) 地址但可变元素的数组”的一个例子。你想要什么与此不同?int a[42];

答:

3赞 Gaurav 9/16/2018 #1

这定义了所有非常量元素的数组。创建数组后,它位于固定位置。

如果你想要一个指向可变值的常量指针数组(除了用于初始化它们的值之外,它们不能指向任何其他值),那么(也许)使用这个:

#include <stdio.h>

int main(void) 
{
    int i=0;
    int j=9;
    int *const ptr[2]={&i,&j};
    *ptr[0]=3;
    printf("%d %d",*ptr[0],*ptr[1]);
    return 0;
}

输出: 3 9