gpt4 book ai didi

c - 尽管声明了 const 限定符,为什么嵌套结构成员会发生更改?

转载 作者:行者123 更新时间:2023-12-02 09:04:30 26 4
gpt4 key购买 nike

尽管我有 const 限定符声明,但我观察到嵌套结构成员 get alter,我可以知道有什么方法可以避免函数内嵌套结构成员 get alter 吗?

代码

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

struct middle_data
{
struct base_data *int_data_ptr;
};

struct base_data
{
int value;
};

void function( const struct middle_data const *middle_ptr)
{

middle_ptr->int_data_ptr->value= 2; // how to forbid value get alter?

struct base_data *ptr= middle_ptr->int_data_ptr;

printf("ptr->value = %d\n", ptr->value);
}

int main(int argc, char **argv)
{

struct middle_data *middle_data_ptr;

middle_data_ptr = (struct middle_data*)malloc(sizeof(*(middle_data_ptr)));

middle_data_ptr->int_data_ptr =malloc(sizeof(*(middle_data_ptr->int_data_ptr)));

middle_data_ptr->int_data_ptr->value=3;

function(middle_data_ptr);

printf(" middle_data_ptr->int_data_ptr->value = %d\n", middle_data_ptr->int_data_ptr->value);

free(middle_data_ptr);
free(middle_data_ptr->int_data_ptr);
return 0;
}

最佳答案

做到这一点的唯一方法是将结构体 base_data 的成员设置为 const

关于c - 尽管声明了 const 限定符,为什么嵌套结构成员会发生更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60138467/

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