Что char * делает или означает как тип возврата для функции? - PullRequest
1 голос
/ 03 апреля 2012

У меня есть программа, которая была настроена для меня, и мне просто нужно было заполнить пробелы.Внизу была одна функция, которую мне не нужно было трогать, но я не понимаю, почему возвращаемый тип функции был char*, а не просто char.

/*Main Function from where it is called */

char * check(char * name, double sx[], double t[], int n);

/*Function*/

char * check(char * name, double sx[], double t[], int n)
{

int i;
for(i = 0 ; i < n ; i++)
    {    
        if(fabs(sx[i] - t[i]) > EPSILON)
            return (strcat(name, " check fails"));
        else
            return (strcat(name, " check is OK"));
    }
}

Я не знаюне понимаю, почему это так.

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

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

Поскольку строка заканчивается символом '\ 0', другие функции могут перебирать память до тех пор, пока не достигнут этого символа. Пожалуйста, прочитайте эту часть на указатели: http://computer.howstuffworks.com/c20.htm

Или лучше: прочитайте весь учебник по Си. Это хорошо написано и должно многое прояснить.

0 голосов
/ 03 апреля 2012

char * - указатель на первый символ в возвращаемой «строке» (массив символов).
, хотя размер массива не указан, в C «строки» заканчиваются нулем.Это означает, что вы можете начать читать символы той позиции, на которую установлен указатель, пока не встретите нулевой символ ('\ 0').

0 голосов
/ 03 апреля 2012

char * означает указатель на символ. В строках C - массив символов, оканчивающийся нулевым символом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...