Я не понимаю как передается стуктура по указателю. Допустим, что есть структура:
typedef struct {
char text[100];
int value;
} console_menu;
И функция,которая принимает ее по указателю:
set_one_item(console_menu *menu) {
sprintf(menu->text,"One item");
menu->value=50;
}
Как именно она передается?
Когда функция принимает указатель,то на что он указывает ? на text или value ,или на адрес всей структуры в памяти?
Как именно она передается?
"Она" никак не передается. Передается не "она", а именно и только указатель.
В полу-формальной разговорной речи про такой способ передачи часто говорят, что "структура передается по указателю". Это нормально, но надо при этом четко понимать, что фактически передается именно и только указатель.
Когда функция принимает указатель,то на что он указывает собственно?
У вас в объявлении функции ясно написано, что это указатель на структуру. Вот на такую структуру он и должен указывать.
А дальше все зависит только от вас. Какой указатель вы передали в точке вызова - такой указатель и получит функция. Он может вообще ни на что не указывать, если вы передадите в функцию null-указатель. Вы в своем примере кода не показали ни одного вызова функции.
Если сослаться на два источника (раз и два), то указатель хранит адрес всей структуры в памяти. При этом адрес первого элемента структуры совпадает с адресом самой структуры. В этом легко убедиться с помощью простой программы:
#include <iostream>
struct SampleStruct
{
char text[100];
int value;
};
int main()
{
SampleStruct *p_struct;
std::cout << "Struct address: " << p_struct << std::endl;
std::cout << "Struct size: " << sizeof(*p_struct) << std::endl;
std::cout << "Text address: " << &(p_struct->text) << std::endl;
std::cout << "Value address: " << &(p_struct->value) << std::endl;
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Во входном файле INPUTTXT содержится единственное число A (1 ≤ A ≤ 10^9)
Как вы думаете, какой вид отношения между классами std::reference_wrapper и std::mutex?ref используется в виде обертки для обертки mutex'а, чтобы представить...