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

Нюансы синтаксиса и семантики: ссылки, указатели и массивы в качестве аргументов функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Error C2338: The C++ Standard doesn't provide a hash for this type http://www.cyberforum.ru/cpp-beginners/thread1804863.html
Хеш таблицы в руках впервые, необходима неупорядоченность. #include <iostream> #include <conio.h> #include <string> #include <unordered_map> #include <vector> #include <fstream> #include "MyLib.h" using std::cin;
C++ Русский язык в Linux, регистр Здравствуйте, пытаюсь запустить код, работавший в Visual Studio на Debian, IDE Codeblocks. Возникла проблема с переводом русских слов в нижний регистр (строка 34). Латиницу переводит, но русский не принимает. Помогите, пожалуйста, заранее спасибо. #include <iostream> #include <string> #include <vector> #include <map> #include <fstream> #include <cctype> #include <algorithm> #include... http://www.cyberforum.ru/cpp-beginners/thread1804861.html
Ошибки в приложении X-code C++
Ситуация такова: решил познакомиться с С++ на примере написания элементарного платформера строго по гайду. Эксперимент провожу на Маке. Установил среду X-code. Установил SFML для X-code. Далее код: #include <SFML/Graphics.hpp> using namespace sf; int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "Test!");
загрузка ogg файлов C++
Доброе время суток, уважаемые. Кто может подсказать по формату ogg vorbis ? нигде не могу найти header для его загрузки, на сайте разработчика я не нашел. заранее спасибо.
C++ Работа с файлами C++. Считывание и выписывание в отдельный файл http://www.cyberforum.ru/cpp-beginners/thread1804832.html
Вычисления и вывод в файл с именем results.txt количества вхождений и координат (номер предложения, номер буквосочетание) в файле text_manip\origin1.txt буквосочетание, введенного пользователем. Пусть в исходном файле сохранено следующий текст: Malware writers are able to exploit zero-day vulnerabilities through several different attack vectors. Web browsers are a particular target because of...
C++ Использование Proxy в массиве Здравствуйте.....каждый раз когда мой прокси срабатывает он использует один и тот же ip и port....есть сайт откуда я беру proxy list, там где то 1000 счемто ip...вот...можно ли создать массив который бы читал этот список ip и впихнул его в коде? вот кусок кода: Proxy.Set(new WebProxy("169.254.100.99", 8080)); //Включить прокси ... подробнее

Показать сообщение отдельно
gru74ik
Модератор
Эксперт CЭксперт С++
4158 / 1784 / 197
Регистрация: 20.02.2013
Сообщений: 4,913
Записей в блоге: 21
09.09.2016, 08:01
qppq, вот Вам ещё одна ссылка, чтобы лучше вникнуть в работу ссылок и указателей.

qppq, с массивами и указателями тут чутка сложнее. Дело в том, что массив не является объектом первого класса (first class citizen), поэтому в функцию передают не массив, а указатель на первый элемент массива:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char* doSomething( char* cstr ) // аргумент функции - указатель
{
    // some code
 
    return cstr;
}
 
char* doSomeStrangeThings( char cstr[] ) // аргумент функции - тоже указатель!
{
    // some code
 
    return cstr;
}
А имя массива, ЕМНИП, неявно кастуется к указателю на первый элемент массива (если где-то в формулировках ошибся, корифеи меня пусть поправят). То есть cstr - это то же самое, что и &cstr[0]:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
char* setGenre( char genre[] ) //синтаксис как у массивов, но это не массив, это указатель!
{
    std::cout << "\nEnter genre: ";
    std::cin >> genre;
 
    return genre;
}
 
int main()
{
    const int CSTR_SIZE = 20;
    char cstr[CSTR_SIZE];
 
    std::cout
        << "User-selected genre is "
        << setGenre( cstr );
 
    std::cout
        << "User-selected genre is "
        << setGenre( &cstr[0] );
 
    return 0;
}
Опять же, очень подробно об этом у Стивена Праты (7 глава, стр. 318).
Миниатюры
Нюансы синтаксиса и семантики: ссылки, указатели и массивы в качестве аргументов функций  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru