0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 4

Использование указателей для передачи параметров функции

29.07.2017, 20:30. Показов 1665. Ответов 11

Студворк — интернет-сервис помощи студентам
Ели мы объявляем формальный параметр как указатель,тогда ведь нам при вызове этой функций следует передать аргумент предварив его & (т.е init(&stk); )? Но при этом в процессе компиляции нижеследующего кода ошибок не выявлено!


//прототип
C++
1
2
3
4
5
6
7
8
9
void init(struct stack *stk) {
  stk->top = 0;
}
 
int main(){
...
struct stack *stk;
...
init(stk);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2017, 20:30
Ответы с готовыми решениями:

Передача массивов указателей в качестве параметров функции
Доброго времени суток, не компилится данный код. Ошибка возникает в функции deal(deck, suit, face);. Код полностью скомпипастил из...

функции в языке с: (использовать механизм передачи параметров по ссылке)
реализовать функцию, осущ. поиск в целочисленном массиве 4-го максимума и 3-го минимума. В качестве параметров функции выступают массив и...

Способы передачи параметров в функции. Реализация динамических двумерных массивов
в программе написать функции для сортировки массива. Подсчитать количество перестановок элементов массива при выполнении сортировки;

11
1613 / 1179 / 552
Регистрация: 08.01.2012
Сообщений: 4,545
29.07.2017, 20:32
Цитата Сообщение от Tau Kush Посмотреть сообщение
struct stack *stk;
а это что?
1
Заблокирован
29.07.2017, 20:34
Цитата Сообщение от Tau Kush Посмотреть сообщение
Ели мы объявляем формальный параметр как указатель,тогда ведь нам при вызове этой функций следует передать аргумент предварив его & (т.е init(&stk); )?
Ели мы объявляем формальный параметр как указатель,тогда нам при вызове этой функции следует передать указатель.
1
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
29.07.2017, 20:57
Tau Kush,
Ели мы объявляем формальный параметр как указатель,тогда ведь нам при вызове этой функций следует передать аргумент предварив его &
только в том случае, если аргументом является переменная. Тоесть:
C++
1
2
int k = 0;
int* ptr = &k; // ptr - это указатель на k. & - взятие адреса в данном случае
Поэтому если мы объявим функцию, которая принимает формальный параметр являющийся указателем, то и нужно передавать указатель в нее при вызове.

Добавлено через 1 минуту
кстати, поддерживаю MansMI, что это такое:
C++
1
void init(struct stack *stk)
?
Может вы имели ввиду:
C++
1
2
3
4
5
6
7
8
9
10
struct stack
{
...
...
};
void init(stack *stk)
{
...
...
}
?
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.07.2017, 21:04
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct my_stack
{
    int top;
};
 
void init(my_stack *stk) 
{
  stk->top = 0;
}
 
 
int main()
{  
    my_stack *pstk = new my_stack;
    init(pstk);
    
    my_stack stk;
    init(&stk);
}
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
30.07.2017, 02:50
Цитата Сообщение от MansMI Посмотреть сообщение
а это что?
Цитата Сообщение от Bretbas Посмотреть сообщение
кстати, поддерживаю MansMI, что это такое:
Это сишный синтаксис.

Добавлено через 16 минут
На самом деле, это тонкий момент. Например, можно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct foo
{
    int bar;
};
 
int foo()
{
    return 42;
}
 
int main()
{
    struct foo f;
    f.bar = 0;
    std::cout << foo() << std::endl;
}
2
Заблокирован
30.07.2017, 02:54
Цитата Сообщение от avgoor Посмотреть сообщение
Например, можно так:
А ещё можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
 
void f(const class std::vector<int>& v)
{
    std::cout << v[0] << '\n';
}
 
int main()
{
    f({1});
}
class std::vector<int> это тоже
Цитата Сообщение от avgoor Посмотреть сообщение
сишный синтаксис
?
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
30.07.2017, 02:59
Лучший ответ Сообщение было отмечено Tau Kush как решение

Решение

Цитата Сообщение от dawn artist Посмотреть сообщение
?
В си без struct не взлетит. В C++ можно struct не писать.
2
Заблокирован
30.07.2017, 02:59
avgoor, ок.
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
30.07.2017, 03:03
Цитата Сообщение от dawn artist Посмотреть сообщение
А ещё можно так:
Ну и? Я привел пример, в котором без struct в 13 строке не скомпилится.
1
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
30.07.2017, 07:34
dawn artist,
Цитата Сообщение от dawn artist Посмотреть сообщение
void f(const class std::vector<int>& v)
в Си есть классы?
1
0 / 0 / 0
Регистрация: 21.05.2016
Сообщений: 4
30.07.2017, 17:20  [ТС]
Спасибо) Разобрался!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2017, 17:20
Помогаю со студенческими работами здесь

Использование указателей на функции
Составить одну из двух задач с использованием указателя на функцию 1. Составить функцию нахождения корня уравнения f(x)=0 методом...

Использование указателей на функции-члены внутри самого класса
День добрый форум! Возник такой вопрос. В классе А есть 3 функции и массив, в котором хранятся адреса этих функций. class A ...

Использование функции get() без параметров
Добрый вечер! Помогите, пожалуйста, разобраться с примером. #include &lt;iostream.h&gt; int main () { char ch; while (...

Использование указателей для индексации матрицы
Ребят как сделать так что-бы ввод и вывод и все действия происходили при помощи указателей .#include &quot;pch.h&quot; #include...

Использование указателей на функцию для обработки строк
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace std; void check(char *a, char *b, int...


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

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

Новые блоги и статьи
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru