Указатель массива для поиска наибольшего числа - PullRequest
0 голосов
/ 01 марта 2019
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *a= malloc(sizeof(int)*10);
    scanf("%d %d",a,a+1);
    if(*a<*(a+1))
    {
        *a=*(a+1);
        }
    printf("%d",*a);
    return 0;
}

Можно ли использовать один и тот же указатель массива для ввода 2 чисел и найти среди них наибольшее число, как показано в приведенном выше коде?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Да, вы можете.Потому что, когда вы говорите *a, вы указываете на 0-ю позицию массива и получаете значение там, а когда вы говорите *(a+1), вы указываете на 1-ю позицию массива.Та же аналогия для &a и &(a+1).

0 голосов
/ 02 марта 2019

Да, это будет работать, хотя это может восприниматься как более удобочитаемое использование скобочной записи для элементов массива.Вам также нужно ограничить пространство только для 2 элементов.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *a = malloc(sizeof(int) * 2);
    scanf("%d %d", &a[0], &a[1]);
    if(a[0] < a[1])
    {
        a[0] = a[1];
    }
    printf("%d", a[0]);
    return 0;
}

Подробнее о указателях и их работе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...