帮我解释下下面这个C语言程序中的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/20 05:31:42
#include <stdio.h>
#include <stdlib.h>
char *getstr(void)
{
char c,*str=NULL;
int n=0;
while (1)
{
c=getchar();/*这里在函数中的作用???*/
str=str?realloc(str,sizeof(char)*++n):malloc(sizeof(char)*++n);/*str? 上面将str=NULL 这里用这个是什么意思?*/
if (c=='\n'||c==EOF) {
str[n-1]=0;/上面定义str为指针,这里却用数组的表示?/
break;
}
str[n-1]=c;

}
return str;
}
int main(void)
{
char *str=getstr();
if (str) { puts(str);
free(str);
}

return 0;
}

c=getchar();//从键盘读入一个字符
后面的str[n-1]=c要用。
str是字符型指针,但是str=str?realloc(str,sizeof(char)*++n):malloc(sizeof(char)*++n);给它重新分配内存空间成为字符型指针数组。