Как передать массив char в функцию c
Перейти к содержимому

Как передать массив char в функцию c

  • автор:

PURE C: Передать массив строк(массив символов) в функцию

Интересует возможность передачи массива массивов символов(строк) в функцию с возможностью, изменять значения этих строк глобально.

#include #include void get(char ***s) < //пробовал еще (char **s[2]) *s[0] = "123"; return; >int main() < char *s[] = < "abc", "def" >; get(&s); printf("%s", s[0]); return 0; > 

По логике вещей все должно работать — если передаем просто число a , то void get(int *a) , массив символов get(char **s) , а вот с массивом строк уже не получается. Как можно решить данную проблему?

Отслеживать
user277248
задан 24 дек 2017 в 19:14
user277248 user277248
87 1 1 серебряный знак 12 12 бронзовых знаков

Будьте проще — void get(char *s[]) < s[0] = "123"; return; >, описывайте то, что реально создаете int main() < char *s[] = < "abc", "def" >; get(s); printf(«%s», s[0]); return 0; > (обратите внимание, заменил &s на s в вызове get() ) и все будет работать (KISS-принцип)

24 дек 2017 в 20:07

Спасибо:) Оказалось, что у меня это все тоже работало(нет): просто в дебаге показывало что ошибка чтения. а при запуске все корректно отрабатывало

24 дек 2017 в 20:49

Может и зависит от компилятора, но я думаю, компилятор должен сказать, что тип параметра в объявлении функции void get(char ***s) не соответствует типу аргумента в вызове get(&s) (для char *s[] = <. >; )

Передать массив char, в функцию

Добрый день, не понемаю как можно в собственную функцию передать массив char. Собственно есть 2 примера, можете подсказать правильные или же нет? Укажите пожалуйста на ошибки. Среда VS2012. Я только просто начал изучать функции.

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
//1 #include using namespace std; int Max=5; void input(char v[],int n); void output(char b[],int m); int main(){ char nas[Max]; input(nas,Max);//ввод output(nas,Max);//вывод return 0; } void input(char v[],int n){ for(int i=0;in;i++){ cout<"Введите элементы = "<(i+1); cin>>v[i]; } } void output(char b[],int m){ for(int i=0;im;i++){ cout<"Индекс "<(i+1)<", элемент= "[i]; } }
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 26
//2 #include using namespace std; void input(char c[],int n); void output(char h[], int o); int main(){ char * vio= new char[5]; input(vio,5);//ввод output(vio,5);//вывод delete [] vio; return 0; } void input(char c[],int n){ for(int i=0;in;i++){ cout<"Элемент "<(i+1); cin>>c[i]; } } void output(char h[], int o){ for(int i=0;io;i++){ cout<"Ваши элементы "[i]; } }

Передача массива в функцию, подсчет длины массива по указателю

    В С++ массивы можно инициализировать следующим образом:

int arr[] = ; // длина массива определяется после инициализации

Как следствие, его можно передать в функцию таким же способом:

void func(int arr[])< //your code >
void func(int* arr) < //your code >int arr[5] = ;

Мы привыкли обращаться к элементам массива по индексам, но попробуйте скомпилировать и запустить следующие строки:

int main()< int arr[5] = ; cout 
void func(int* arr, int length)< //your code >

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

int len(int* arr)

Крайне важно понять критерий по которому мы будем оценивать содержимое. В противном случае, можно получить не совсем то, что ожидалось.

Как передать массив char в функцию c

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *