Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Передать динамический массив в функцию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с графикой в ВС 3,1 http://www.cyberforum.ru/cpp-beginners/thread35842.html
Народ помогите написать фрагмент программы связанная с графикой,а мучусь, не выходит. Мне надо вывести график на осях координат ХУ. Оси должы содержать координатные деления( 0..1..2...3 итд) - ну...
C++ Indefenid Direction (не пойму ошибки) Здраствуйте,дорогие форумчане))) Подскажите пожалуйста,я в главной процедуре main вызываю функцию после определения и заполнения массивов: //Первый массив double *Massiv_for_Diagonal; ... http://www.cyberforum.ru/cpp-beginners/thread35840.html
C++ Работа с файлом
Здравствуйте, помогите решить задачу на С, а то я с файлами вообще никак. Прочитать файл, который может содержать символы перевода строки. Для каждой строки определить и вывести на экран её номер и...
C++ Ошибка библиотеки graphics.h в Code::Blocks
Всем привет! Я работаю в CodeBlock когда пишу #include<graphics.h> все время выдает ошибку. Подскажите пожалуйста в чем дело!
C++ Максимальный елемент массива http://www.cyberforum.ru/cpp-beginners/thread35833.html
Программа неправильно находит максимальный елемент. И иногда при генерации нового массива просто закрывается сама. Что здесь не так? Немогу найти ошибку. #include <iostream.h> #include...
C++ BSCMAKE: error BK1506 : cannot open file '.\Debug\RESDlg.sbr': No such file or directory --------------------Configuration: RES - Win32 Debug-------------------- Compiling... RESDlg.cpp c:\program files\microsoft visual studio\myprojects\res\resdlg.cpp(197) : fatal error C1010:... подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.05.2009, 12:20
Цитата Сообщение от toxxin
Имеется динамический массив, который надо передать в функцию. Число элементов массива заранее не известно. Какие есть варианты на этот счет??
всегда передаётся только адрес первого элемента массива (даже если укажешь размер, он не будет передан, потому что в функцию пойдёт только копия адреса начала массива)

Код
    func(arg);
это &arg[0], дальше, внутри функции через этот адрес будет получаться доступ к любому элементу массива
если не контролировать длину, можно вылезти за край массива, в запрещённую память и получится segmentation fault (особенно когда в него пишешь)
так что, можно пометить конец массива в нём самом, или передать его размер рядом через sizeof
Код
    func(arg, sizeof arg / sizeof arg[0]);
передаст количество элементов в массиве (общее число байт, поделённое на число байт в одном элементе)
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru