0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 20
1

Ссылки, указатели и функции

15.06.2021, 13:03. Показов 1859. Ответов 5

Напримере описания функции char* strcpy(char * dest, const char *src)
Если я правильно понимаю при использовании я должен использовать в качестве первого аргумента указатель, но в примере


C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <string.h>
int main (void)
{
char src[1024]="первая строка\0вторая строка";
char dst[1024]="";
strcpy (dst,src);
printf("src: %s %s \n", src, &src[14]);
printf("dst: %s %s \n", dst, &dst[14]);
return 0;
}
не используется указатель или ссылка в первом и втором аргументах, почему?
хотя в описании функции стоят char * и const char*, по идеии нужно передать адреса в качестве аргументов?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2021, 13:03
Ответы с готовыми решениями:

функции,указатели и ссылки.
Всем привет! Задали простецкую задачу. решите пожалуйста Написать программу в которой есть три...

Указатели или ссылки (в качестве аргументов функции) ?
В каких случая надо использовать ссылки и в каких указатели в качестве аргументов функции? В общем...

Указатели на функции. Указатели на функции как формальные параметры у функциях высшего уровня
Найти наименьшее значение для функций используя функции и указатели на функции ...

Перегруженные функции. Через указатели и через ссылки. С++
1. Даны действительные числа a, b и c . Проверить выполняется ли неравенство: a&lt;b&lt;c.если да, то...

5
Продавец времени
7129 / 4005 / 924
Регистрация: 12.03.2015
Сообщений: 18,846
15.06.2021, 13:38 2
Цитата Сообщение от anTomin Посмотреть сообщение
не используется
Используется константный указатель.
" всякие символы " - это константа в коде, прибитая гвоздями к постоянному адресу при компиляции. Адрес её начала и пихается в стек для передачи в вызываемую функцию.
Операция взятия адреса переменной & тоже возвращает константный указатель (адрес).
1
16094 / 8692 / 2124
Регистрация: 30.01.2014
Сообщений: 14,984
15.06.2021, 13:39 3
Цитата Сообщение от anTomin Посмотреть сообщение
не используется указатель или ссылка в первом и втором аргументах, почему?
Массив неявно конвертируется в указатель на начальный элемент массива.
1
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 20
15.06.2021, 14:53  [ТС] 4
Цитата Сообщение от Verevkin Посмотреть сообщение
Используется константный указатель
это вы про оба аргумента?
и если так получается то большинство переменных можно считать константными указателями?
очень запутался
0
Продавец времени
7129 / 4005 / 924
Регистрация: 12.03.2015
Сообщений: 18,846
15.06.2021, 15:00 5
Цитата Сообщение от anTomin Посмотреть сообщение
это вы про оба аргумента?
не совсем.
Цитата Сообщение от anTomin Посмотреть сообщение
и если так получается то большинство переменных можно считать константными указателями?
очень запутался
распутывайся.
сишник - сложный язык. Но ещё первичнее - знать, как память работает.
0
16094 / 8692 / 2124
Регистрация: 30.01.2014
Сообщений: 14,984
15.06.2021, 15:22 6
Цитата Сообщение от anTomin Посмотреть сообщение
и если так получается то большинство переменных можно считать константными указателями?
очень запутался
Нет.
Все эти отсылки к низкоуровневости испортят вам понимание языка. В статически типизированном языке при обучении нужно отталкиваться от типов. Сначала типизация, потом, если нужно, реализация.

Еще раз: в выражениях, где может предполагаться указатель (указатель - это тип), имя массива (массив - это составной тип языка С++, а не структура данных в данном случае) неявно конвертируется в этот указатель.
C++
1
2
3
char buf[100]; // массив
 
char* p = buf; // семантически предполагается &buf[0] или &*buf
Для других типов такого поведения нет.
C++
1
2
3
char buf; // один char
 
char* p = &buf; // надо брать адрес явно
Но его (поведение) можно сделать вручную для классов (это тоже тип), если перегрузить соответствующий оператор (полагаю, что вы до классов еще не дошли, поэтому подробности не пишу).

Кликните здесь для просмотра всего текста
Про функции, которые тоже неявно конвертируются в указатели на функции, намеренно не написал, если что.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2021, 15:22
Помогаю со студенческими работами здесь

Ссылки, указатели
Доброго времени. Как, используя ссылки, указатели и, возможно, другие приемы сделать что-то вроде...

Указатели и ссылки?
Ниже приведёна программы которая вызывает функцию. В функции происходит следующее создаются 2...

Указатели и ссылки [С++]
Всем привет. я тут программу делаю. Цель: определить,принадлежит ли точка заданному промежутку(а...

Указатели и ссылки
Добрый день, есть вопросы по поводу указателей и ссылок в параметрах функций. Правильно ли я...

Указатели и ссылки
Используя вместо самой переменной указатель на нее написать программу в соответствии с заданием:...

Ссылки vs Указатели
Почему ссылки считаются более хорошим средством, чем указатели? Ведь если человек будет...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru