文件学习终

#define _CRT_SECURE_NO_WARMINGS

#include <stdio.h>

#include <stdlib.h>

#include <assert.h>

#include <string.h>

#include <errno.h>

//1 预处理指令

//include

//用于引用头文件,为了能够使用头文件中声明或定义的函数和变量,引用头文件的方式有2种

//#include<stdio.h> //引用的编译器的默认的头文件的位置

//include "a.h" //引用当前工程中的头文件

//引入头文件名可以是文件路径

//#include <sys/a.h> //引入默认系统的头文件的位置

//如

//#error

//让编译器停止编译,并给出停止编译的原因

//语法

//#error "原因"

//应用场景

//#ifndef 宏

//#error 未定义

//#endif

//如

//#pragma

//此指令非常强大 可以改变编译器的环境 如对齐方式 警告 数据段等

//但在不同的VS版本中支持的指令也不一样 因此存在兼容性的问题 所以少用为好

//常用的指令

//#pragma once //只引入一次头文件

//#pragma pack(1)

//按定义当前程序的字符集编码,此指令只有2015+才有效

//字符集名称 utf-8 unicode gbk ansl

//#pragma execution_character_set(字符集名称)

//#pragma warning() //禁止显示。。。的警告

//如

//2变长参数

//语法

//... 表示为变长参数 可以存在多个 也可以不写

// ...前面至少存在一个参数

//返回值类型 函数名(参数类型 参数名,...)

//int add(int a,...)

//变长参数的访问

//引入头文件 <stdarg.h>

//1 定义 va_list 类型的变量

//va_list ap;

//2 开启获取变长参数

//va_start(ap,第一个形式参数)

//3获取参数值

//数据类型 变量名 va_arg(ap,变量名)

//如果变量获取完成后 则va_arg返回值为小于0的值

//4 在变长参数中,应该设计结束标识 如0,在结束之前,应该设置变长参数变量为空

#include <stdio.h>

#include <stdarg.h>

int add2(int a, ...);

int main() {

int ret = add2(10, 2, 1, 3, 4, 0);

ret = add2(ret, 5, 8, 0);

ret = add2(ret, 9, 0);

ret = add2(ret, 0);

printf("ret is %d\n", ret);

return 0;

}

int add2(int a, ...) {

// 1. 定义va_list变量

va_list ap;

// 2. 开启读取变长参数

va_start(ap, a);

// 3. 循环读取所有变长参数

int n = 0;

int ret = a;// 返回累加的结果

while ((n = va_arg(ap, int)) != 0) {

printf("%d ", n);

ret += n;

}

printf("\n");

// 4. 结束变长参数

va_end(ap);

return ret;

}

相关推荐
星幻元宇VR1 小时前
VR航空航天科普设备【VR时空直升机】
科技·学习·安全·生活·vr
_李小白2 小时前
【android opencv学习笔记】Day 2: Mat类(图片数据结构体)
android·opencv·学习
harder3212 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
程序猿乐锅4 小时前
【Tilas|第三篇】多表SQL语句
数据库·经验分享·笔记·学习·mysql
徐某人..4 小时前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm
AOwhisky4 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
love530love5 小时前
Windows Podman Machine 虚拟硬盘迁移完整指南:从 C 盘到非系统盘
c语言·人工智能·windows·podman
love530love5 小时前
Podman Machine 虚拟硬盘迁移实战二:用 Junction 把 vhdx 从 C 盘搬到其他盘
c语言·开发语言·人工智能·windows·wsl·podman·podman machine
光影少年5 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs
sakiko_5 小时前
UIKit学习笔记2-组件嵌套、滚动视图等
笔记·学习·objective-c·swift·uikit