У меня есть немного путаницы в вопросе об изменении указателя структуры на структурную переменную .разыменование структуры указатель на структурную переменную
Будет хорошо, если я продемонстрирую свою проблему с примером.
Так вот я:
struct my_struct{
int num1;
int num2;
}tmp_struct;
void Display_struct(void * dest_var){
struct my_struct struct_ptr;
struct_ptr = *((struct my_struct *)dest_var);
printf("%d\t%d\n",struct_ptr.num1,struct_ptr.num2);
}
int main()
{
tmp_struct.num1 = 100;
tmp_struct.num2 = 150;
Display_struct(&tmp_struct);
return 0;
}
Теперь, когда я бегу этот пример я могу получить код для компиляции в очень чистой форме, а также выход правильно.
Но что я не могу получить, что это это правильный способ разыменования указателя структуры переменной структуры, как мы делаем в случае других простых типов данных, как это:
int example_num;
void Display_struct(void * dest_var){
int example_num_ptr;
example_num_ptr = *((int *)dest_var);
printf("%d\t%d\n",struct_ptr.num1,struct_ptr.num2);
}
int main()
{
example_num = 100;
Display_struct(&example_num);
return 0;
}
Здесь мы можем разыменовать int-указатель на int-переменную, поскольку это простой тип данных , но, на мой взгляд, мы не можем просто разыменовать указатель структуры аналогично структурной переменной, поскольку это не простой тип данных, а сложный тип данных или структура данных.
Пожалуйста, помогите мне в решении этой концепции.
Почему вы не могли разыменовать указатель на структуру? какова была бы точка в указателе, что вы не можете получить доступ к базовому объекту? –
Вы имеете в виду что-то вроде этого: https://ideone.com/lduzh0? – mch
В чем проблема? BTW Второй пример неверен, вы пытаетесь напечатать 'struct_ptr.num1', но во втором примере нет' struct_ptr'. –