20150408函数

本文详细介绍了C++和C语言中函数的基本概念、调用方式、参数传递顺序及可变参数的实现方法,并通过具体示例展示了如何使用stdarg.h处理可变参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.函数意义以及ccpp编辑器调用的差别

1.c语言。没有函数声明,有库可以调用,没有函数声明有函数实体可以调用

c++语言,没有函数声明,有库不可以调用,没有函数声明有函数实体在后,也不可以调用


二.函数调用以及函数基本概念

1.每一个应用程序都有函数表,每个表格存储函数地址,改变地址可以改变函数的行为


六.函数参数运算顺序

1.函数参数从右往左计算


七.可变参数的实现

1.标准参数头文件:<stdarg.h>


int add(int num, ...){}    //这里的三个点代表可变参数


示例:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>//标准参数


int add(int num,...)//...代表可变参数
{
	int res = 0;//结果
	va_list  argp;//存储参数开始的地址
	va_start(argp, num);//从首地址开始,读取num后面的数据
	for (int i = 0; i < num;i++)
	{

		res += va_arg(argp, int);//读取一个数据按照int解析
	}
	va_end(argp);//结束读取
	return res;


}


void main1()
{
	printf("%d", add(3, 1, 2, 3));
	printf("\n%d", add(4, 1, 2, 3,4));
	printf("\n%d", add(5, 1, 2, 3, 4,5));
	getchar();

}

void main2()
{
	//printf("%d,%d,%d", 1, 2, 3);
	printf("%d,%s,%c,%d", 1, "123", 'A',4);








	getchar();
}

void go(int num, ...)
{
	va_list  argp;//存储参数开始的地址
	va_start(argp, num);//从首地址开始,读取num后面的数据
	for (int i = 0; i < num; i++)
	{
		//char str[50];
	//	sprintf(str, "%s", va_arg(argp, char *));
		//system(str);
		system(va_arg(argp, char *));
		//读取一个数据按照char *解析
	}
	va_end(argp);//结束读取



}





void main3()
{
	go(3, "notepad", "calc", "tasklist &pause");

	getchar();

}


void showint(int start,...)
{
	va_list  argp;//存储参数开始的地址
	va_start(argp, start);//从首地址开始,读取num后面的数据
	int argvalue = start;//第一步初始化
	do 
	{
		printf("\n%d", argvalue);
		argvalue =va_arg(argp, int);//不断读取
	


	} while (argvalue != -1);
	va_end(argp);//结束读取



}


void main()
{
	//showint(1, 2, 3, 4, -1);
	showint(1, 2, 3, 4,5, -1);
	getchar();




}

八.函数声明定义全局变量声明定义

1.全局变量没有初始化默认为0


2.全局变量可以有多个声明,但只可以有一个定义,局部变量没有声明和定义的区别

(变量不赋值即为声明)


3.全局变量可以跨文件调用


4.内部快语句变量会屏蔽同名外部变量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值