C语言指针做形参

来源:百度知道 编辑:UC知道 时间:2024/07/07 20:43:54
以下程序:
#include <stdio.h>
main()
{ void sb(int );
int a[10];
int *p;
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
sb(a);
}

void sb(int *b)
{
int i;
for(i=0;i<10;i++)
{printf("%d\n",b[i]);
printf("%o\n",b);}
}
提示编译出错,但是如果在main中的声明改为sb(int *b)则没有任何问题,不是说声明的时候可以省略参数名吗??怎么会??

参数名可以省略,但是类型不能省略,而int *b的类型是int *而非int。

将void sb(int ); 改为void sb(int *);

但是如果在main中的声明改为sb(int *b)则没有任何问题,不是说声明的时候可以省略参数名吗??怎么会??

是啊,但你也不能把*漏掉阿;

应该申明为:void sb(int* );