这是我看到的一位大佬写的对缺省参数的理解:https://blog.youkuaiyun.com/m0_62171658/article/details/124504342
写的很详细了,在此基础上我就补充一点缺省函数的用处吧:
我们在C语言学习数据结构时见过以下代码吧:
我们要给栈创建空间,但我们创建的大小有可能不够,那有人就说可以扩容,确实可以,但是在开辟足够的空间前要不断地插入不断地扩容,是会有消耗的。这里半缺省参数就很好的解决了这个问题。
这里给大家展示部分代码,来比较区别:
st2的代码没有将空间开辟的量固定,用半缺省参数确定空间大小,此时就可以很好地开辟我们所需要的空间。
#include <stdlib.h>
#include <iostream>
using std:: cout;
using std:: endl;
namespace abc
{
typedef struct Stack
{
int* base;
int* top;
int stacksize;
}ST;
void StackInit(ST* p, int N = 3);
void StackPush(ST* p, int x);
}
void abc::StackInit(ST* ps, int N )
{
ps->base = (int*)malloc(sizeof(int) * N);
ps->top = 0;
ps->stacksize = 0;
}
void abc::StackPush(ST* ps, int x)
{
// ...
}
int main()
{
abc::ST st1;
//这里我们可以确认空间大小是10
//就直接输入10
StackInit(&st1, 10);
for (size_t i = 0; i < 10; i++)
{
StackPush(&st1, i);
}
// 不知道可能会插入多少个
//就这样写避开了扩容
abc::ST st2;
StackInit(&st2);
return 0;
}
以上就是本篇内容,创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,如果喜欢我的文章,给个关注吧!
如果本篇博客有任何错误,请批评指教,不胜感激 !