Урок 16

Изучаване на основите на програмирането на C за манекени.

Последни новини

YoungCoder вече е на Stepike. Регистрирайте се: https://vk.cc/75rISy

За да се запишете в курс, трябва да се регистрирате в Stepika: https://vk.cc/75rIC4

Урок 16. Указатели.

Прочетете по-простата версия на този урок "Показатели".

В новата версия:

  • Още по-ясно обяснение
  • Допълнителни материали
  • 10 задачи по програмиране с автоматична проверка на решението

Как да конвертирате число от шестнадесетично в десетично.

Фиг.1 Преобразуване на шестнадесетично число в десетична бройна система

Преобразуване на число от десетичен в шестнадесетичен.

урок
Фиг.2 Превод от 10-ти в шестнадесетичен
Фиг.3 Пример за представяне на компютърна памет
printf printf printf
Фигура 4. Програма, илюстрираща как работи sizeof().
printf
Фиг.5 Адреси на променливи в паметта
Фиг.6. Пример за местоположението на променливите в паметта
printf printf
Фиг.7 Местоположение на масива в паметта
printf
Фиг.9. Използване на указатели за достъп до стойностите на променливите, към които се отнасят
printf printf
Фиг.10 Нулев указател
урок
Фиг. 11 Прост пъзел. Какво ще изведе представената програма?
урок
Фиг.12 Пример за програма с указатели

=D От коя точка?

HEX / DEC, веднага скицирах калкулатор. Но започвайки от реда: Указатели. :) Да, не наистина, препрочетох го няколко пъти, нарисувах нещо на лист хартия, стана повече или по-малко ясно какви са, не е ясно "защо?", Е, след като разберем защо, мисля на въпроса "как?" ще бъде по-лесно да отговорите.

Когато прочетох раздела, всичко беше ясно, когато вече го бях чел, стана неразбираемо, но не беше ясно какво точно не беше ясно)))

Какъв обрат. =D

ето как Anons преминават към рекурсия =)

Относно последната задача, правилно ли разбрах, че указателите могат да се използват като вид клипборд?

десетичен към шестнадесетичен

#include "stdio.h" int main() int a,m[100]; scanf("%d", &a); за (int i=0; a>0; i++) m[i]=a%16; a/=16; > for (int i=100; i>=0; i--) if (m[i]==10) printf("A ", m[i]); if (m[i]==11) printf("B ", m[i]); if (m[i]==12) printf("C ", m[i]); if (m[i]==13) printf("D ", m[i]); if (m[i]==14) printf("E ", m[i]); if (m[i]==15) printf("F ", m[i]); if ((m[i] =0)) printf("%d ", m[i]); > printf("\n"); връщане(0); >

#include "stdio.h" #include "string.h" int main () char m[100]; получава (m); int f[100],n=strlen(m); for(int i=0; i='0')&&(m[i] Отговор Изтриване

Вторият код не се копира добре. Сега относно забележката ви. Това се случи поради факта, че когато ще работим с елементите на масив от тип char. Те се съхраняват като числа. Отделно, не помня дали го казах или не, но във втория урок посочих диапазона на този тип данни и там беше в числа. Тук. Добре е, че тибеше забелязано. Това трябва да се подчертае.

Това е калкулатор от десетична до 16-та; Работи, но наистина не разбирам как, Написах го сам, използвайки метода на „научното мушкане“ и самият аз не го разбирам, Четох в интернет как компилаторът разпознава и преобразува отрицателни числа, но не знам формулата за превод.

#include "stdio.h" #include "string.h"

void f_1(int); void f_2(int);

Ох, ох, ох. Какъв страх =))) Първо, моля ви да използвате специална услуга за такива огромни кодове. Подробности тук https://vk.com/away.php?to=http%3A%2F%2Fyoungcoder.blogspot.ru%2F2014%2F02%2Fispolzuem-pastebin.html

Второ, научното мушкане е прекрасно, то е в основата на любопитството. Но все пак трябва да разберете какво пишете. Този въпрос трябва да бъде разгледан подробно.

Сега за програмата. Нека засега се занимаваме с превода в една от посоките. Да приемем, че искаме да преобразуваме число от десетично в шестнадесетично. Как се прави това е описано в началото на урока. Опитайте се да опишете този алгоритъм на ясен език. Ами, например, алгоритъмът на програмата за събиране на две числа: 1. Четене на първото число. 2. Четем второто число. 3. Намерете тяхната сума. 4. Показваме отговора на екрана.