C++: проблема с указателями

317
01 июня 2017, 10:02

Хочу перейти к другому значению через добавление константы к указателю, но выводит не то значение, что нужно.

int min(int m, ...) {
    int *ptr = &m;
    int min = *(ptr + 1);
    if (*ptr == 0)
        return 0;
    for(; *ptr; ptr++) {
        if (*ptr < min)
            min = *ptr;
    }
    return min;
}

*ptr работает нормально, но уже *(ptr + 1) не выдаёт то, что нужно.

Answer 1

Если всё-таки интересует, почему не получалось с указателями, возможно, это подскажет почему.


#include <stdio.h>
#define LIMIT 100
void searchoffset(int findwhat, ...)
{
   int *args = &findwhat;
   printf("first element: %p : %d\n\n", args, *args);
   args++;
   int counter = 0;
   do
   {
      printf("offset: %d [%p : %d]\n", counter, args, *args);
      args++;
      counter++;
   } while (*args != findwhat);
   printf("offset: %d [%p : %d]\n", counter, args, *args);
}

int main()
{
   searchoffset(135, 2, 11, 144, 25, 7, 135);
   return 0;
}
READ ALSO
Выделение памяти в С++ и аварийное завершение программы

Выделение памяти в С++ и аварийное завершение программы

Допустим, у меня есть класс, который я создаю в самом начале программы, в его конструкторе я выделяю память под какие-то другие объекты с помощью...

248
Как читать файл по 128 бит?

Как читать файл по 128 бит?

Так смог получить только первые 128 битКак при каждом цикле получать следующие 128 бит? Как определить конец файла?

359
Code style в Travis CI

Code style в Travis CI

Как в travisyml написать чтобы выполнялся code style только у измененных файлов? Язык C++

325
Объясните суть атомарных операций

Объясните суть атомарных операций

Вопрос по поводу атомарных операций

280