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

Функция - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчет через count_if http://www.cyberforum.ru/cpp-beginners/thread366541.html
Есть, например, функция, принимающая 2 параметра bool BoolFunction ( параметр1, параметр2 ) { // что - то там } где параметр1 - это элемент типа вектора нужно подсчитать в векторе, сколько элементов удовлетворяют условиям BoolFunction. Сделать так не получается:
C++ Ввести размерность матрицы с клавиатуры Задача: создать массив N*M, (ввод размерности с клавиатуры) и вывести его на экран. Написала код, но где-то видимо туплю, помогите, пожалуйста.:-#include <iostream> using namespace std; int main() {setlocale(LC_ALL,"Russian"); int nSize ; // Размер массива int mSize; cout << "Input n: "; cout << "Input m: "; cin... http://www.cyberforum.ru/cpp-beginners/thread366540.html
Написать программу. Строка, состоящая из символов... C++
Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки и обработку строки: Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот.
C++ Скопировать элементы большие числа а в другой динамически созданный массив
Организовать ввод динамического массива размером N. Скопировать элементы большие числа а(а вводится пользователем) в другой динамически созданный массив. Главное чтобы это было все с использованием указателей и на С++ Console Wizard Помогите плиз
C++ Итератор http://www.cyberforum.ru/cpp-beginners/thread366529.html
#include <iostream> #include <list> using namespace std; list<int>::iterator pos (list<int> a,list<int>::iterator it) { for (it; it != a.end(); it++) { if (*it == 5) { break;
C++ Просмотр значений переменных Пожскажите, как в Visual Studio 2010 открыть watches: окно, где показываются значения переменных на данном шаге. подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.10.2011, 01:26     Функция
Цитата Сообщение от xexew Посмотреть сообщение
Можете подкинуть статьи по функциям и указателям, ато в нете куча этих статей?)
xexew, почитайте лучше книжки. На форуме была прикреплённая тема со списком хорошей литературы.

Цитата Сообщение от xexew Посмотреть сообщение
Будьте добры, помогите понять принцип функций в целом, в каком случае требуется ставить указатель "*", а в каком нет.
Функция - это, грубо говоря, программа в программе. Подпрограмма. Часто выполняемые действия обычно выносят в функции, чтобы не писать по десять раз. Функция может принимать аргументы (параметры по-другому) и возвращать значение. Синтаксис такой:

тип_возвращаемого_значения имя ( тип_параметра_1 параметр_1, тип_параметра_2 параметр_2, ... )
{
тело_функции
}

Пример:

int add( int a, int b )
{
return a + b;
}

Функция add принимает два параметра типа int и возвращающая значение типа int, которое является суммой её параметров. То есть, когда я пишу

int c = add( 5, 8 );

Вызывается функция add, в первый параметр попадает число 5, во второй - 8. Значение, которое вернёт функция, 13, запишется в int c.



Указатель - переменная, хранящая адрес начала чего-либо. Синтаксис объявления указателя на объект:

тип_объекта * имя_указателя;

Пример:

char * alpha;

Указатель alpha на начало объекта (или последовательности объектов) типа char.

Если указатель указывает на элемент массива, то для перехода к следующему элементу нужно выполнить инкремент указателя, а для перехода к предыдущему элементу - декремент указателя:

alpha++;
alpha--;

Так же можно производить доступ через operator[]:

alpha[5];

Чтобы взять значение, на которое указывает указатель, нужно его разименовать:

C
1
2
3
4
char * alpha = "Hello"; // alpha указывает на начало массива char
char c = *alpha; // c == 'H'
alpha++;
c = *alpha; // c == 'e'
Или получить доступ по индексу:

C
1
2
char * alpha = "Hello"; // alpha указывает на начало массива char
char c = alpha[4]; // c == 'o'

Для взятия адреса объекта используется операция взятия адреса объекта:

C
1
2
3
int a = 18;
int * ptr = &a; // взятие адреса a и запись его в указатель ptr
int b = *ptr; // разыменовывание указателя ptr и запись значения по указателю в b; b == 18
При создании указателя на массив операция взятия адреса не требуется, так как идентификатор (имя) массива эквивалентно указателю на начало массива:

C
1
2
int a[16];
int * ptr = a;


При передачи больших объектов и массивов в функцию предпочтительна передача по указателю, так как в этом случае функция примет 4 байта указателя вместо огромного объекта или массива:

C
1
2
3
4
5
6
int lng( char * str ); // функция принимает указатель на char
 
//...
 
printf( "%d", lng( "hello" ) ); // передача указателя на начало строки hello в функцию lng;
                          // значение, возвращённое функцией lng передаётся в функцию printf
Есть ещё указатели на функцию. Будет интересно подробнее узнать про всё это - найдёте книжки и почитаете.
 
Текущее время: 06:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru