Задать вопрос
@DUKAEV
v

Изменяет функция аргументы! Это как?

Вот пример из книги:
#include <stdio.h>
#define MAXL 1000

int getline(char s[], int lim)
{
	int c, i;
	i=0;

	while(--lim>0 && (c=getchar()) != EOF && c != '\n') s[i++]=c;
	if(c == '\n')
		s[i++]=c;
	s[i]='\0';
	return i;
}

int strindex(char s[], char t[])
{
	int i, j, k;

	for(i = 0; s[i] != '\0'; i++){
		for(j=i, k=0; t[k] != '\0' && s[j] == t[k]; j++, k++)
			;
		if(k > 0 && t[k] == '\0')
			return i;
	}
	return -1;
}

int main(int argc, char const *argv[])
{
	char pattern[]="ould";
	char line[MAXL];
	char found=0;

	while(getline(line, MAXL)>0)
		if(strindex(line, pattern)>=0){
			printf("Нашли: %s", line);
			found++;
		}
	return found;
}

Эта пример из учебника- Си Ритчи.
Как может getline() изменять массив line без передачи указателя?
Но компилируется и всё работает.
  • Вопрос задан
  • 351 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А с чего Вы взяли, что указатель не передаётся? Для C варианты char s[] и char *s синтаксически эквивалентны.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы