更换dns能上国外网站吗,做网站的要多钱,网站开发教程 布局,营销qq官网1、函数 函数是C语言代码的基本组成部分#xff0c;它是一个小的模块#xff0c;整个程序由很多个功能独立的模块#xff08;函数#xff09;组成。这就是程序设计的基本分化方法。 main#xff1a;C语言中所谓的主函数#xff0c;主函数就是一种特别的函数。特别之处在于…1、函数 函数是C语言代码的基本组成部分它是一个小的模块整个程序由很多个功能独立的模块函数组成。这就是程序设计的基本分化方法。 mainC语言中所谓的主函数主函数就是一种特别的函数。特别之处在于一个C语言程序只能有且必须有一个main函数。C语言规定一个C语言程序从主函数开始执行到主函数执行完结束。
1.1、函数三要素
1.1.1、函数定义 函数定义是关键是这个函数的实现。函数定义中包含了函数体函数体中的代码段决定了这个函数的功能。
//函数定义又叫函数实现
int sub(int a, int b)
{return a - b; // 函数定义后面没有分号但是有{}和函数体
}
1.1.2、函数声明 函数声明实际上是叫函数原型声明。什么叫原型函数的原型包含三部分函数名返回值类型函数参数列表。通俗讲函数原型就是这个函数叫什么接收什么类型的几个参数返回一个什么样的返回值。 函数声明的作用在于告诉使用函数的人这个函数使用时应该传递给他什么样的参数它会返回什么样类型的返回值。这些东西都是写函数的人在函数定义中规定好的如果使用函数的人不参照这个原型来使用就会出错结果就会和你想的不一样。 声明周期指一个东西从出生到死亡的过程。
//函数声明
int sub(int a, int b); //函数声明后面必须有分号
1.1.3、函数调用 函数调用就是使用函数名来调用函数完成功能。调用时必须参照原型给函数传参然后从函数得到适当的返回值作为结果。
//函数调用调用已经写好的函数模块来完成既定功能
c sub(b, a); //函数调用后面有分号
1.2、函数参数 形参形式参数的简称。在函数定义和函数声明中的参数列表中的参数都是形参。 实参实际参数的简称。函数调用中实际传递的参数才是实参。 函数调用的过程其实就是实参传递给形参的一个过程。这个传递实际是一次拷贝。实际参数的时候实参本质是一个变量本身并没有进入到函数内而是把自己的值复制了一份传给了函数中的形参在函数中参与运算。这种传参方法就叫做传值调用。 实参在给形参传参的时候是按顺序传参的不是名字。 实参的类型必须和形参类型相同否则就可能会出错。
1.3、返回值关键字return 当函数执行完之后会给调用该函数的地方返回一个值。这个值的类型就是函数声明中返回值类型这个值就是函数体中最后一句return xxx;返回的那个值。
1.4、函数名变量名 第一点起名字时候不能随意要遵守规则。这个规则有两个层次第一层就是合法第二层是合理。合法就是符号C语言中变量名的命名规则。合理就是变量名起的好人一看就知道什么意思一看就知道这个函数是干嘛的而且优美、好记。 第二点C语言中所有的符号都是区分大小写的。也就是说abc和Abc和aBc都是不同的符号。 第三点C语言函数名变量名的命名习惯。没有固定的结论有多种使用都很广泛的命名方式。介绍两种这里 一种是linux的命名习惯 student_age str_to_int 另一种是骆驼命名法 studentAge StrToInt
1.5、注 1、《高质量程序设计指南》作者林锐可以看看 2.、华为代码规范可以网上找找看看
2、数组 基本数据类型整形、浮点型、字符型。 复合数据类型是指由简单数据类型经过一定的数据结构封装组成而成的新的数据类型。例如数组、结构体、公用体。
2.1、为什么需要数组 数组就是数组成一个组数就是一个特定数据类型的变量组就是说好多数放在了一起。
2.2、怎么定义数组
int a[4]; //数组中元素类型 数组名[数组元素个数]; 数组中的所有元素必须是同一种数据类型不可能在一个数组中存储两种数据类型的数。
2.3、怎么使用数组 数组定义的时候作为整体定义。但是使用的时候不能作为整体使用使用时必须拆开使用数组中的各个元素。
int a[4];
//使用其中的四个元素分别用a[0]a[3]其中[]是数组的标志[]中的数字叫做数组下标index索引下标是我们访问数组中各个元素的指引。
//下标是0代表数组中第一个元素下标是1代表数组第二个元素。如果数组长度为n下标中最后一个是n-1。
//访问数组时要特别注意下标下标是从0开始的如果下标超出了n-1会产生越界访问结果是不可预期的。
2.4、数组的初始化 初始化initinalize简写为init是为了让对象有一个预定的初始状态。
2.4.1、 简单变量的初始化 当一个局部变量定义时没有初始化它的值是随机的。这个如果没有注意可能会导致程序出错。怎么办解决方案有两个 第一个在定义过后明确给它赋值使用运算符。 第二个定义该变量时同时进行初始化。
注 1、一般来讲只要你记得显示赋值则两种方式并无优劣差异。但是人会犯错会不小心所以还是定义同时初始化好一点因为这个定义的时候就有了固定值即使之后忘记显示赋值也不会造成结果是随机的。 2、一般情况下定义的同时都将变量初始化为0。局部变量定义同时初始化为0这是一个写代码好习惯。
2.4.2、数组的初始化方式 第一种完全初始化,依次赋值。
int a[3] {1,3,5} //a[0] 1, a[1] 3, a[2] 5 第二种不完全初始化初始化式中的值从a[0]开始依次向后赋值不足的默认用0填充赋值。
int a[3] {2} //a[0] 2, a[1] 0, a[2] 0
2.5、不同数据类型的数组
int a[5]; // 整形数组
float a[5]; // 浮点型数组
double a[5]; // 双精度浮点型数组
char a[5]; // 字符数组 程序在环境中运行时需要一定的资源支持。这些资源包括CPU运算能力、内存等这些资源一般由运行时环境一般是操作系统来提供例如我们在linux系统上./a.out运行程序时linux系统为我们提供了运算能力和内存。 程序越庞大运行时消耗的资源越多。例如内存占用越大的程序占用的内存越多。占用内存的其中之一就是我们在程序中定义的变量。 C语言程序中变量的实质就是内存中的一个格子。当我们定义创造一个变量了一个变量后就相当于在内存中得到了一个格子这个格子的名字就是变量名以后访问这个内存格子就使用该变量名就行了。这就是变量的本质。
2.6、字符数组及它的两种初始化
//定义字符数组
char a[5];
//定义的同时进行初始化
char a[5] {a, b, c}; //a[0] a, a[1] b, a[2] c
char a[5] {97, 98, 99}; //a[0] a, a[1] b, a[2] c
char a[] {a, b, c}; //a[0] a, a[1] b, a[2] c
//字符串方式来初始化字符数组
char a[] abc; //a[0] a, a[1] b, a[2] c
2.6.1、注
1、在C语言中引用一个单个字符时应该用单引号括起来例如a。
2、定义数组同时初始化则可以省略数组定义时[]中的长度。C语言编译器会自动推论其长度推论依据是初始化式中初始化元素的个数。由此可知省略[]中数组元素个数只有一种情况那就是后面的初始化式必须为完全初始化。
3、在C语言中引用一个字符串时应该用括起来例如abc。
4、abc实际上有4个字符分别是a b c \0。
5、\0 这个字符是ASCII码表中的第一个字符它的编码值是0对应的字符是空字符不可见字符在屏幕上看不见没法显示一般要用转义字符方式来显示。例如\n表示回车符\t表示Tab\0代表空字符
6、\0是C语言中定义的字符串的结尾标志。所以当c语言程序中使用abc这种方式去初始化时编译器会自动在字符e后面添加一个\0。于是乎变成了4个字符。