网站建设与网页设计论述题,3网站建设公司,怎么快速开发一个网站,小程序二维码函数的重载在C语言中函数名是唯一的#xff0c;不可以重复定义#xff0c;当我们利用函数执行#xff0c;功能相似的函数#xff0c;我们也不能使用同一个函数#xff0c;比如说#xff0c;求整型的函数#xff0c;不能用来求浮点型、字符型。在C中引入函数重载的概念不可以重复定义当我们利用函数执行功能相似的函数我们也不能使用同一个函数比如说求整型的函数不能用来求浮点型、字符型。在C中引入函数重载的概念函数名可以相同只要函数的参数类型不同或者参数的个数不同。#include iostream
using namespace std;int mymax(int a, int b)
{return a b ? a : b;
}float mymax(float a, float b)
{return a b ? a : b;
}double mymax(double a, double b)
{return a b ? a : b;
}char mymax(char a,char b)
{return a b ? a : b;
}int main()
{cout mymax(10, 20) endl;cout mymax(3.14, 5.20) endl;cout mymax(2.33333333, 5.555555) endl;cout mymax(a, A) endl;return 0;
}在C中支持函数的重载允许函数名相同只需要函数参数的类型不相同或参数的个数不同。它优于C语言的是我们不需要大量记忆功能相同的函数名。比如上面的求最大值的函数我们只需要记忆mymax是求最大值的函数如果是C语言我们就需要记忆4个函数名因为C语言不支持函数的重载函数名不可以相同。作用域运算符我们在C语言中已经知道了变量的作用域范围当一个局部和全局变量同时存在的时候我们优先使用局部变量那我们又想使用全局变量怎么办我们加作用域运算符就可以优先使用全局变量了。#include iostream
using namespace std;int a 100;int main()
{int a 10;cout a a endl;cout ::a ::a endl;return 0;
}强制类型转换在C语言中我们也学过强制类型转换C也可以使用C语言的强制类型转换在C引入新的强制转换的方法就是为了更加的方便#include iostream
using namespace std;int main()
{float f 3.14;cout (int)f endl;//C语言的写法cout int(f) endl;//C的写法return 0;
}C的强制类型转换与C语言的强制类型转换的不同就在C语言是把要强制类型转换的类型加括号C的写法是将我们要强制转换的数据变量括起来。#include iostream
using namespace std;int main()
{float f 3.14;int a (int)f 0.9;int b int(f 0.9);int c (int)(f 0.9);cout a a b b c c endl;return 0;
}如果我们要强制类型转换f0.9在C语言需要两个括号而C只需要一个括号。运算符new和deleteC语言中我们使用mallocrealloc来申请动态的内存空间在C中我们使用new来申请空间C语言使用free释放内存空间而C使用delete来释放空间我们先写一个程序看看new和delete是怎么使用的#include iostream
using namespace std;int main()
{int* p new int;//公式 指针变量名new 类型名。 该行代码的作用是申请一个整型空间然后这个整型空间的地址存在p指针中*p 100;cout *p endl;delete p;//释放申请的整型空间防止内存泄露return 0;
}那么我们假如要申请很多个整型空间怎么做呢#include iostream
#include stdio.h
using namespace std;int main()
{int* p new int[10];//向内存申请10个整型空间首地址给p 公式指针变量名new 类型名[size] size是申请的个数if (p NULL)//判断是否申请空间成功{perror(new:);//打印错误信息return 1;//结束程序}for (int i 0; i 10; i)//输入10个元素{cin p[i];}for (int i 0; i 10; i)//输出{cout p[i] ;}delete []p;//释放我们数组的空间 公式 delete [] 指针变量名return 0;
}
#include iostream
using namespace std;int main()
{int* p new int(100);//申请一个整型空间并且将100赋值给*pcout *p endl;delete p;return 0;
}C语言的动态内存申请malloc、realloc申请成功返回的是void*的指针我们还需要进行类型转换。而new开辟的内存空间成功返回的直接是首地址不需要强制类型转换malloc也需要进行字节大小的计算所以C中new申请动态内存空间更加便利。