创建自定义数据结构的常量实例

moa*_*men 3 c

我已经将这两种数据结构定义为类型:

typedef struct {
    float x,y,z;
} location3d;

typedef struct {
    location3d location;
    float radius; 
} particle3d;
Run Code Online (Sandbox Code Playgroud)

我的问题是:我可以创建一个常量location3d还是一个常量particle3d?我搜索了常量,但我发现的只是如何定义常量整数或chars... 等。

Bar*_*mar 6

您使用const用户定义的类型的方式与使用内置类型的方式完全相同。与其他常量一样,您需要对其进行初始化。

const particle3d my_particle = { {10.0, 21.5, 3}, 1.23};
Run Code Online (Sandbox Code Playgroud)

您还可以使用指定的初始值设定项。

const particle3d my_particle = {.radius = 1.23, .location = {.x = 10.0, .y = 21.5, .z = 3}};
Run Code Online (Sandbox Code Playgroud)

  • 是的,您可以使用指定的初始值设定项,就像非常量结构一样。 (2认同)

Dee*_*ire 5

您可以使用const与内置类型相同的方式。

看看下面的实现:

#include <stdio.h>

typedef struct {
    float x,y,z;
} location3d;

typedef struct {
    location3d location;
    float radius; 
} particle3d;

int main(){

    const particle3d particle = {{1, 2, 3}, 8.9};
    
    printf("%f %f %f\n", particle.location.x, particle.location.y, particle.location.z);

    printf("%f\n", particle.radius);
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1.000000 2.000000 3.000000
8.900000
Run Code Online (Sandbox Code Playgroud)

PS:作者最近删除了 C++ 标签。删除了 C++ 代码并转移到 C。