【发布时间】:2020-05-25 01:36:30
【问题描述】:
尽管我声明了const 限定符,但我观察到嵌套结构成员发生了变化,我可以知道有什么方法可以避免嵌套结构成员在函数内发生变化吗?
代码
#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;
}
【问题讨论】:
-
如果不将成员设为
const,您将无法做到这一点。