大佬们为啥print函数体的head为啥能定义在括号外??
#include<stdio.h>#include<stdlib.h>
typedef char datatype;
typedef struct node{
datatype data;
struct node *next;
}linklist;
linklist *creatlistbefore(){
datatype d;
linklist *p,*s,*head;
head=malloc(sizeof(linklist));
head->next=NULL;
p=head;
printf("输入元素值(回车结束):");
rewind(stdin);
scanf("%c",&d);
while(d!='\n'){
s=malloc(sizeof(linklist));
s->data=d;
s->next=p->next;
p->next=s;
scanf("%c",&d);
}
return head;
}
void print(head)
linklist *head;
{
linklist *p;
p=head->next;
while(p!=NULL){
printf("%6c",p->data);
p=p->next;
}
printf("\n");
}
int main(){
linklist *hea;
hea=creatlistbefore();
print(hea);
}
请教一下print函数定义*head是啥原理,想了半天没琢磨过来 可以详述你的问题吗,我们可以一起讨论 萌出血 发表于 2020-10-30 16:41
可以详述你的问题吗,我们可以一起讨论
主要不理解void print(head)后面为啥可以定义linklist *head,而如果这个定义包含在大括号内就会报错 萌出血 发表于 2020-10-30 16:41
可以详述你的问题吗,我们可以一起讨论
算我孤陋寡闻了,这种写法第一次见,就是想知道啥原理 这是老版本的C语言风格了,ANSI C之前的标准K&R C就是这么写的
这样的代码void print(head)
linklist *head;
{
...
}
就相当于void print(linklist *head)
{
...
}
建议不要再用这种过时的风格 lhgzbxhz 发表于 2020-10-30 18:21
这是老版本的C语言风格了,ANSI C之前的标准K&R C就是这么写的
这样的代码
就相当于
感谢!我也是刚才突然看懂了{:10_275:}
页:
[1]