通过程序分析宏,函数原型与定义函数

目的:在一行打印40个星号的函数,并打印表头程序。

代码:

#include <stdio.h>
#define NAME "GIGATHINK,INC."
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolis, CA 94904"
#define WIDTH 40

void starbar(void);//函数原型

int main(void)
{	
	starbar();//使用函数
	printf("%s\n",NAME);
	printf("%s\n",ADDRESS);
	printf("%s\n",PLACE);
	starbar();//使用函数
	return 0;
}

void starbar(void)//定义函数
{
	int count;
	for (count = 1; count<= WIDTH; count++)
	putchar('*');
	putchar('\n');

}

运行结果:

难点解析:

1.宏:

首先解释一下#define NAME "GIGATHINK,INC.",这里我们叫做宏,宏的作用主要为替换,将后面的内容用前面来进行替换。所以该程序中所有NAME的内容都被翻译成为GIGATHINK,INC.。
宏也可以定义为:#define M (x*y)//用M代表x*y
!!一般我们为了定义宏时,为了区别其他变量,要用大写字母,但是也可以用小写字母,只不过不推荐用小写字母。

宏的优势:

在程序中如果我们未定义宏,如果修改时就需要一个一个修改,效率十分低下,如果我们使用宏进行编辑,修改时只需要修改宏对应的值便可以修改程序内容,效率提升。

2.函数原型与定义函数

函数原型

函数原型应当在使用函数前定义,告诉编译函数类型,并且要在函数调用前声明。

函数调用

函数调用表明在这里使用函数。

定义函数

定义函数表明怎么执行。

在本程序中,第一个void starbar(void)为函数原型,应当在调用前声明。在后面的starbar()中为调用函数,调用后面的定义函数。第二个void starbar(void)为定义函数,函数定义当调用starbar()时,输出40个“*”。

注意:

  • 函数声明是要分号,需要写在调用之前,定义是没有分号的
  • 当函数调用无需返回值时,用void定义函数,当需要返回值时,函数接收的类型应当与与返回类型保持一致。

例如:

int imin(int n,int m);

int main (void{
	.
	.
	.
}

int imin(int n, int m) 
{
	int min;
	
	if (n < m);
		min = n;
	else
		min = m;
		
	return min;
}

因为我的返回值min是int类型,所以定义时imin时应当定义为int类型。

  • 定义要求每个变量都需要来声明类型
void dibs (int x,y,z)//无效的定义

void dibs(int x,int y,int z)//有效的定义
  • 函数头中的starbar()没有加分号,这是告诉编译器正在定义starbar()。而不是调用或声明函数原型。

以上是我的总结,希望对大家有所收获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值