Программирование на Си урок 35: Структуры в языке Си объявление указателей в структуре
HTML-код
- Опубликовано: 22 фев 2017
- Структуры в языке Си объявление указателей в структуре
Поддержать канал:
If You want to support the channel:
Донат / Donate
RUB R939373054553
USD Z657301568665
Спасибо. Ваши уроки радуют. Было бы здорово, если б они продолжались.
Спасибо! Полезный и понятный урок ! Только начал учить си, очень помогает !
От души большое спасибо. Хорошо объясняешь. С помощью твоих уроков скоро в университет поступлю.
Спасибо за похвалу )
Спасибо за урок!
Пожалуйста )
Спасибо за полезные скринкасты. Какие программные усилители звука посоветуете использовать для обработки Ваших видео после скачки?
21:20
Вы создали массив констант, чем это хорошо?
Так удобнее.
struct car
{
char *ptr;
};
int main()
{
struct car bmw;
char arr[]={"Hello"};
bmw.ptr=arr;
printf("%s
", bmw.ptr);
}
Сначала по указателю присваиваем значение из четырёх символов + терминатор. Потом меняем на значение так же из четырёх символов + терминатор - всё ок. А если попытаться поменять на значение не из четырёх, а, например, из восьми символов + терминатор - что сделает компилятор? Переназначит область памяти большего размера? Заругается, что не хватает места, и вылетит? Обрежет строку до первоначального размера? Если третье, то обрежет до размера четыре символа + терминатор, или пять символов, но без терминатора? Если переназначит память - освободит ли назначенную ранее область памяти? Или возникнет утечка?
Привет. Бывает так что объявляют структуру как тип данных, и потом применяют эту структуру на функцию. Например
typedef struct {
int a;
char *b;
} ts;
ts print_char() ....
Что это значит? Какой в этом смысл ?
*Mark Wolf*
Здравствуйте. Смысл в этом достаточно глубокий. Это значит, что фу-ция print_char() возвращает значение у которого тип ts.
13:58 Это обыкновенное поведение любого массива. Не важно где массив находится или в структуре или без структуры.
17:17 По такой логике не надо никогда использовать обыкновенные массивы.
19:19 Непонятно почему вы именно указатель создали. Циклом for можно и из простого массива в другой массив сохранить.
24:00 У вас сейчас в ptr.str лежит только массив констант со словом Idea. Странная идея.
при попытке заполнения строки -указателя через сканф выдает ошибку при заполнении таким образом масива символов ошибки нет как заполнить строку - указатель через сканф?
#include
int main(int argc, char **argv)
{
char **uk_char; // указатель на указатель
char *massiv[] = {""}; // создали массив указателей и инициализировали его значением пустая строка
uk_char = massiv; // указатель содержит адрес массива
fprintf(stdout, "Enter string:
"); // выводим строку с приглашением написать что нить.
fscanf(stdin, "%s", uk_char); // считываем из стандартного ввода
fprintf(stdout, "You entered 'Pointer': %s
", uk_char); // выводим то что ввели.
fprintf(stdout, "You entered 'Massiv': %s
", massiv); // выводим то что ввели.
} // Можно сделать так.
оператор new используй
10:20
вот НЕ посимвольная запись и работает:
typedef struct
{
char name[20];
}magazin;
main()
{
magazin one ={"magnit"};
printf("name=%s", one.name);
}
хех, one name ютюб воспринимает как сайт XD
Обращение через точку.
Уроки конечно хороши, но еще бы объяснять зачем все это надо. А то получается, что каждый урок сводится к функции принтф, и не понятно ,зачем все эти танцы с бубном нужны
Хауди это ты?)
Это говнокод?! Индусы сморят твои видосы?
Да и ты один из говнокодеров