C++入门(二)缺省与cin&cout

目录

流插入流提取

 缺省值


流插入流提取

我们先浅谈以下c++的输入输出流函数"cout”和“cin”吧

我们在打印“helloworld”的时候会发现" <<  "的符号,这就是c++的流插入运算符,与之相对的,还有流提取“ >> ” 运算符,注意与c语言的左移和右移运算符区别开来,一个是对数操作,一个是进行IO操作。

区别于c,它们的最大优势就是可以自动识别输入和输出的类型, 但并不意为着它就比printf或者sacnf好用,可以根据自身喜好使用。

cin >> n;//流提取
int* a = (int*)malloc(sizeof(int)*n);
for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	for (int i = 0; i < n; i++)
	{
		cout << a[i]<<" ";//数字之间空行
	}
	cout << endl;//单行换行

 打印学生信息。

int age = 10;
char name[10] = "zhangsan";
cout << "姓名:" << name<<endl << "年龄:" << age << endl;
printf("姓名:%s\n年龄:%d",name,age);

 缺省值

缺省分为全缺省半缺省,二者都遵循传递时必须从右往左连续。缺省值在编程中可以大大简化代码的编写和调用,特别是在具有多个参数的函数中。通过使用缺省值,我们可以让函数在不同的情况下有不同的行为,同时又避免了重复的代码。

全缺省

全缺省指的是函数的所有参数都有默认值,也就是说所有参数都可以不给定值,而直接使用函数的默认值

void fun(int i = 0, int x = 10, double w= 2.3)
	{
		cout << "i=" << i << endl;
		cout << "x=" << x << endl;
		cout << "w=" << w << endl;
	}
	int main()
	{
		fun(2, 3, 1);
		fun(2, 1);
		fun(1);

 半缺省

半缺省就是不完全给函数给初值,而是选择性地给。

以下几种方式都是错误的,可以理解为栈先进后出

void fun(int i = 0, int x, double w = 2.3)
fun(,2,);
fun(, , 3);

这里给大家介绍一个缺省具体应用的场景,大家自行体会。

struct Stack//栈
{
	int* a;
	int top;
	int capacity;
};
void StackInit(struct Stack* ps, int defaultcapicity = 4)
{
	ps->a = (int*)malloc(sizeof(int) * defaultcapicity);
	if (ps->a == NULL)
	{
		perror("malloc fail");
		exit(-1);
	}
	ps->top = 0;
	ps->capacity = defaultcapicity;
}

	int main()
	{
		struct Stack a;
		StackInit(&a);//不传则使用默认空间
		StackInit(&a, 100);	//假设要求初始分配空间100

可以看出缺省使得我们对参数的把控更加自由多样,也能根据具体要求传递所需的缺省值。

还有一个注意的点是当函数声明和定义分开的时候

1.只能在声明时设置缺省值。2.不能在定义函数时给。3.不能声明和定义同时给。

为什么呢,因为包含头文件的时候你只包含了声明的部分,而你却在定义函数时给缺省,这样可能会出错。然后如果同时给,如果给的不一致也可能会出问题。

缺省值只能是常量或者全局变量,一般我们直接在函数声明时给缺省,所以只需考虑常量这点即可,注意,这里的常量指的不是形参是常量,而是形参的值是常量。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小C您好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值