Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
TM1596
1 / 1 / 0
Регистрация: 10.12.2016
Сообщений: 50
1

Указатели и printf

18.11.2018, 19:30. Просмотров 404. Ответов 5
Метки нет (Все метки)

Здравствуйте. Простой вопрос, почему y и func(p_x, p_y) выводит одинаковое значение?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdio.h>
#include <math.h>
 
int func(int *p_x, int *p_y) {
 
    return *p_y = *p_x + *p_y;
}
int main()
{
    SetConsoleCP(1251);  
    SetConsoleOutputCP(1251);
 
    int x, y;
 
    int *p_x = &x;
    int *p_y = &y;
 
    printf("Введите значение первой переменной: "); scanf("%d", &x);
    printf("Введите значение второй переменной: "); scanf("%d", &y);
 
    printf("Значение первой переменной: %d, второй %d, второй после замены %d", x, y, func(p_x, p_y));
        
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2018, 19:30
Ответы с готовыми решениями:

Динамические матрицы (указатели на указатели)
Никак не могу осознать указатели на указатели. Вот есть объявление double **A; Потом следует ...

Массивы указателей и указатели на указатели
В чем разница между массивами указателей и указателями на указатели? Может, между ними такая же...

Вывод printf
Привет всем, я тут начал изучать язык си и вот столкнулся с проблемой. Программа преобразует массив...

Не работает printf()
Почему консоль ничего не выводит, в чём проблема? Microsoft Visual C++ Express 2010 #include...

Спецификатор i в printf
Для чего в Си есть отдельный спецификатор %i для целых чисел в методе printf? Это дает какие-то...

5
netBool
314 / 296 / 170
Регистрация: 16.11.2010
Сообщений: 1,064
Записей в блоге: 9
Завершенные тесты: 5
18.11.2018, 19:38 2
Цитата Сообщение от TM1596 Посмотреть сообщение
Простой вопрос, почему y и func(p_x, p_y) выводит одинаковое значение?
Ну так p_y - это указатель на y. Поэтому когда вы меняете значение по адресу p_y - *p_y = *p_x + *p_y; - вы меняете и значение самой y
1
TM1596
1 / 1 / 0
Регистрация: 10.12.2016
Сообщений: 50
18.11.2018, 19:58  [ТС] 3
Но я же сначала вывожу 'y', а только потом меняю значение
0
prik
281 / 184 / 61
Регистрация: 01.03.2011
Сообщений: 501
18.11.2018, 20:06 4
Не, сначала вычисляется func(), а уже потом вызывается printf();
1
TM1596
1 / 1 / 0
Регистрация: 10.12.2016
Сообщений: 50
18.11.2018, 20:08  [ТС] 5
А почему такой приоритет?
0
foxyboy
31 / 19 / 12
Регистрация: 08.06.2011
Сообщений: 39
18.11.2018, 20:21 6
Потому что на момент выполнения функции уже должны быть высчитаны все ее аргументы. Замените
C
1
printf("Значение первой переменной: %d, второй %d, второй после замены %d", x, y, func(p_x, p_y));
на
C
1
2
    printf("Значение первой переменной: %d, второй %d,", x, y);
    printf("второй после замены %d", func(p_x, p_y));
1
18.11.2018, 20:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2018, 20:21

Функция printf()
Когда делаешь ошибку в функции printf() , показывает что в файле stdio.h вот так выглядит создание...

Scanf_s и printf
Доброго времени суток. Я плохо знаю этот язык и у меня вечные проблемы с этими операторами. Вот мой...

насчет printf
вот у меня есть слова, мне надо вывести слова меньше определенной длинны, и больше определенной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru