Как вывести void в c
Перейти к содержимому

Как вывести void в c

  • автор:

void (C++)

При использовании в качестве возвращаемого типа функции ключевое слово указывает, void что функция не возвращает значение. При использовании для списка параметров функции указывает, void что функция не принимает параметров. При использовании в объявлении указателя указывает, void что указатель является универсальным.

Если тип указателя равен void* , указатель может указывать на любую переменную, которая не объявлена с const помощью или volatile ключевое слово. void* Указатель не может быть разыменован, если только он не приведение к другому типу. void* Указатель можно преобразовать в любой другой тип указателя данных.

В C++ void указатель может указывать на бесплатную функцию (функцию, не являющуюся членом класса), или на статическую функцию-член, но не на нестатическую функцию-член.

Невозможно объявить переменную типа void .

В соответствии с стилем рекомендации по основной версии C++ не используются void для указания пустого списка формальных параметров. Дополнительные сведения см. в руководстве по C++ Core NL.25: не используйте void в качестве типа аргумента.

Пример

// void.cpp void return_nothing() < // A void function can have a return with no argument, // or no return statement. >void vobject; // C2182 void *pv; // okay int *pint; int i; int main() < pv = &i; // Cast is optional in C, required in C++ pint = (int *)pv; >

Указатели типа void*

В си существует особый тип указателей – указатели типа void или пустые указатели. Эти указатели используются в том случае, когда тип переменной не известен. Так как void не имеет типа, то к нему не применима операция разадресации (взятие содержимого) и адресная арифметика, так как неизвестно представление данных. Тем не менее, если мы работаем с указателем типа void, то нам доступны операции сравнения.

Если необходимо работать с пустым указателем, то сначала нужно явно привести тип. Например

#include #include int main()

Переменная не может иметь типа void, этот тип определён только для указателей. Пустые указатели нашли широкое применение при вызове функций. Можно написать функцию общего назначения, которая будет работать с любым типом. Например, напишем функцию swap, которая обменивает местами содержимое двух переменных. У этой функции будет три аргумента – указатели на переменные, которые необходимо обменять местами и их размер.

#include #include #include #include void swap(void *a, void *b, size_t size) < char* tmp; //создаём временную переменную для обмена tmp = (char*) malloc(size); memcpy(tmp, a, size); memcpy(a, b, size); memcpy(b, tmp, size); free(tmp); >int main()

Наша функция может выглядеть и по-другому. Обойдёмся без дорогостоящего выделения памяти и будем копировать побайтно.

void swap(void *a, void *b, size_t size) < char tmp; size_t i; for (i = 0; i < size; i++) < tmp = *((char*) b + i); *((char*) b + i) = *((char*) a + i); *((char*) a + i) = tmp; >>

Пустые указатели позволяют создавать функции, которые возвращают и принимают одинаковые параметры, но имеют разное название. Это пригодится в дальнейшем, при изучении указателей на функции. Например

int cmpInt(void* a, void* b) < return *((int*) a) - *((int*) b); >int cmpString(void *a, void* b) < return strcmp((char*) a, (char*) b); >int cmpFloat(void* a, void* b) < float fdiff = *((float*) a) - *((float*) b); if (fabs(fdiff) < 0.000001f) < return 0; >if (fdiff < 0) < return -1; >else < return 1; >>

ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 sypachev_s_s@mail.ru Stepan Sypachev students

email

Всё ещё не понятно? – пиши вопросы на ящик

Вывод из функции в c++

Всем здравствуйте, следующая проблема: У меня есть функция «showArray» она выводит случайные числа, я в «main» приписываю её, а как мне теперь увидеть сгенерированные числа? В main прописываю : cout

 #include #include #include using namespace std ; void generateArray(int *arr,int n); void showArray(int *arr,int n); int searchMin(int *arr,int n); int searchMax(int *arr,int n); void echangeMinMax(int *arr,int index_of_min,int index_of_max); void sortUpArray(int *arr,int n); void deleteEvenElements(int *arr,int &n); void moveLeftElements(int *arr,int n); int main() < int n; cin>> n; int *arr=new int[n]; generateArray(arr,n) ; showArray(arr,n); int index_of_min=searchMin(arr,n); cout void generateArray(int *arr,int n) < int a,b; cin>> a; cin>> b; srand(time(NULL)); for (int i=0;i void showArray(int *arr,int n) < for (int i=0;iint searchMin(int *arr,int n) < int index_of_min=0; for (int i=1;i> return index_of_min; > int searchMax(int *arr,int n) < int index_of_max=0; for (int i=1;iarr[index_of_max]) < index_of_max= i; >> return index_of_max; > void echangeMinMax(int *arr,int index_of_min,int index_of_max) < swap(arr[index_of_min],arr[index_of_max]); >void sortUpArray(int *arr,int n); < for (int i=0;iarr[i]) < swap (arr [i],arr[i]); >> 

Отслеживать
задан 14 ноя 2017 в 14:08
139 1 1 золотой знак 5 5 серебряных знаков 17 17 бронзовых знаков
Вы пишете именно cout << showArray ? (тем самым выводите адрес функции showArray) 14 ноя 2017 в 14:14

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

int main() < int n; cin>> n; 
 int *arr=new int[n]; generateArray(arr,n) ; 

Ввели числа a и b и заполнили массив.

 showArray(arr,n); 

Вывели массив на экран.

 int index_of_min=searchMin(arr,n); cout 

Нашли и вывели индекс минимального значения

 int index_of_max=searchMax(arr,n); cout 
 echangeMinMax(arr,index_of_min, index_of_max); 
 showArray(arr,n); 

Опять вывели массив

Что вы еще хотите?

Еще раз его вывести? просто пишите, как и ранее -

 showArray(arr,n); 

Справочник по C#. void

void можно использовать в качестве возвращаемого типа метода (или локальной функции) для определения того, что метод не возвращает значение.

public static void Display(IEnumerable numbers) < if (numbers is null) < return; >Console.WriteLine(string.Join(" ", numbers)); > 

Вы также можете использовать void как ссылочный тип для объявления того, что тип указателя неизвестен. Дополнительные сведения см. в разделе Типы указателей.

Нельзя использовать void в качестве типа переменной.

См. также раздел

  • справочник по C#
  • System.Void

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *