Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2010, 19:16   #1
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию ошибка при передаче ссылки на массив в визуал 2008

Код:
#include <stdio.h>
#include <string.h>

void rl(char& a);
void rl(char& a){
char s[101];
scanf("%s",&s);
if(s[0]=='-') for(int i=strlen(s)-1;i>0;i--)
a[i]=-1*(s[strlen(s)-i]-48);
else for(int i=strlen(s)-1;i>=0;i--) a[i]=s[strlen(s)-i]-48;
return;
}

int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
char a[102],b[102];

rl(a);
rl(b);
return 0;
}
почему пишет ошибку когда я передаю ссылку на массив функции?
LOST94 вне форума Ответить с цитированием
Старый 29.06.2010, 19:24   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
void rl(char& a);
Это ссылка не на массив, а на один символ.
Если размерность массива известна, то можно (но не нужно)
Код:
void rl(char (&a)[102]);
А вообще по-нормальному - это
Код:
void rl(char* a);
Somebody вне форума Ответить с цитированием
Старый 29.06.2010, 19:31   #3
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию

а тогда массив вроде не изменяется, а мне надо чтоб изменялся в функции rl
LOST94 вне форума Ответить с цитированием
Старый 29.06.2010, 19:47   #4
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

указатель в rl это ссылка(копирование указателя не будет)
Код:
void rl(char *&a){
}

int main 
{
char a[102];
char *p;
p = a;
rl(p);
}
проще
Код:
void rl(char *a){
}

int main 
{
char a[102];
rl(a);
}
include <Qt>

Последний раз редактировалось sever-42; 29.06.2010 в 19:52.
sever-42 вне форума Ответить с цитированием
Старый 29.06.2010, 20:26   #5
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от sever-42 Посмотреть сообщение
указатель в rl это ссылка(копирование указателя не будет)
Ну, копирование указателя-то будет, но указатель только от этого не изменится.
Цитата:
void rl(char *&a)
А тут как раз уже ссылка на указатель, то есть сам этот указатель можно изменить.
Somebody вне форума Ответить с цитированием
Старый 29.06.2010, 20:42   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

ТС надо изменять массив внутри функции. Просто передавать указатель на первый элемент массива...
Код:
void rl(char *a);
NiCola999 вне форума Ответить с цитированием
Старый 29.06.2010, 20:49   #7
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Ну, копирование указателя-то будет, но указатель только от этого не изменится.
Локальная копия указателя в функции создаваться же не будет, значит и копирование не будет... вроде так...
include <Qt>
sever-42 вне форума Ответить с цитированием
Старый 29.06.2010, 22:23   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ссылка на указатель и указатель это разные вещи.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка текста при передаче из cmd в Memo Noor Общие вопросы Delphi 5 21.09.2011 16:15
Проблема при передаче через Com-порт ShlakBaum Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 01.02.2010 21:59
Visual C++ 2008 ошибка при отладке R6034 SADAM Visual C++ 6 23.04.2009 10:56
Много ошибок в gl.h при подключении в визуал студио 2008 KrL^^ Общие вопросы C/C++ 1 12.04.2009 20:43
отделение строк при передаче в serversocket... prizrak1390 Общие вопросы Delphi 14 29.06.2008 21:13