Вопрос, который я пытаюсь выполнить в процессе подготовки к экзамену выглядит следующим образом:Путаница между передаче по значению или по ссылке
: Рассмотрим функцию с этим прототипом: недействительным обращенного (список обугленного [], символ сп 1 , char ch2); Функция «convert» изменяет каждый символ chi, который находит внутри «списка» в символ ch2. Например, вызов функции "convert (name, 'a', 'z')" преобразует каждый 'a' в 'z' внутри массива с именем «name». Напишите определение функции «convert».
Моя программа запускается до конца двух функций scanf в основном, я смотрю, как передавать параметры без использования указателей.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
char list[];
char ch1;
char ch2;
void convert(char list[], char ch1, char ch2);
int main()
{
char list[15];
char ch1, ch2;
printf("Enter a string of characters:");
scanf("%s", list);
printf("Enter the first letter:");
scanf("%c\n", &ch1);
printf("Enter the second letter:");
scanf("%c\n", &ch2);
}
void convert(char list[], char ch1, char ch2)
{
int wordcount;
int i = 0;
int x = 0;
int y = 0;
if (list[i] == ch1)
{
x++;
list[i] = ch2;
}
else if (list[i] != ch1)
{
y++;
}
else if (list[i] == NULL)
{
wordcount = (y + x + 1);
}
printf("In the string there are %d letters and in %s the letter %c was changed to %c, %d times.", wordcount , list, ch1, ch2, x);
}
call 'convert (list, ch1, ch2);' main. но 1-й аргумент преобразования ('char list []') является ** указателем **, а не массивом. – BLUEPIXY
, когда Array переходит к функции, передает значение (указателя). если вы можете изменить прототип, wrap of Array по struct pass by value (include array). – BLUEPIXY
Спасибо, я думал, что идея объявления глобальных переменных заключалась в том, чтобы позволить различным функциям работать с переменной. Также я просто хотел уточнить, что указатель идет в начале основного текста, где написана строка? –