C语言02

一. 函数的分类

C语言中的函数就是面向对象中的“方法”。

C语言的函数可以大概分为3类:主函数(一定要有),自定义函数(可有可无),C语言提供的库函数(eg:stdio.h中的输出printf()输入函数scanf())。

二. 函数的声明和定义

1. 在java中,每个方法的定义顺序没有限制;而在C语言中会报错,必须前面定义过来,后面才能调用,如果要是先使用函数,必须先做个函数声明,并不用实现,并且可以省略参数名称。

2. 在大型的C程序中,为了分模块进行开发,一般会将函数的声明和定义实现分别放在2个文件中,函数声明在.h头文件中,函数定义放在.c源文件中。然后在main.c中包含sum.h即可使用sum函数

3. 为什么在main.c中包含sum.c?

原因:编译器会编译所有的.c源文件,这里包括main.c、sum.c,编译成功后生成sum.obj、main.obj文件,当链接这两个文件时链接器会发现sum.obj和main.obj里面都有sum函数的定义,于是报"标识符重复"的错误。

 

三. 函数的形参和实参

如果是基本数据类型,是不会影响实参的。函数调用的时候,纯粹是把实参的值传递给形参,实参和形参是两个不同的变量,互不影响。

四. 输入输出函数

是stdio.h中声明的函数,因此使用前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量

使用%d,说明对应的格式符参数必须是整型。

五. 基本数据类型

C语言有丰富的数据类型,因此会很适合用来编写数据库,DB2,Oracle都是C语言写的。

C语言包括基本数据类型(整型,浮点型,字符型)和指针类型(void*)和构造类型(数组,结构体struct,共用体union,枚举enum),空类型(void)。

任何变量都要先定义类型再使用。因为变量的类型决定了变量占有的储存空间,所以定义变量类型,就是为了给该变量分配适当的存储空间。

局部变量的使用和java稍微有点不一样

1> 在Java中,你声明了一个局部变量后,如果没有经过初始化赋值就使用该变量,编译器直接报错

2> 在C语言中,你声明看一个局部变量后,没有经过初始化赋值是可以使用的,但是不安全

* 如果是int类型变量是全局的,系统会默认赋值为0

char的取值范围是:ASCII码字符,或者-128~127的整数,且只能存储一个字符,不能储存汉字,因为汉字占了两个字符。

// 方式1
char c = 'A';

// 方式2
char c = 65;

六. 类型修饰符

有以下4种类型修饰符(限定符):

  • short  短型
  • long  长型
  • signed  有符号型
  • unsigned  无符号型

1> short和long可以提供不同长度的整型数,也就是可以改变整型数的取值范围,比如short的取值范围是-32768~32767,long的取值范围就是-2147483648~2147483647


2> 当然,数据的存储长度也会跟着变化。比如,在64位编译器环境下,short占2个字节(16位),int占4个字节(32位),long占8个字节(64位)。世界上的编译器林林总总,不同编译器环境下,取值范围和占用的长度是不一样的,不过幸运的是,ANSI ISO制定了以下规则:


* short跟int至少为16位(2字节)


* long至少为32位(4字节)


* short的长度不能大于int,int的长度不能大于long


* char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型


1> signed代表有符号,包括正数、负数和0;unsigned代表无符号,只包括正数和0。比如,signed的取值范围是-32768~32767,那么unsigned的取值范围是0~65535,当然,不同的编译器有不同的取值范围


2> 其实,signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数,

七. 基本语句和运算

  • 循环语句(do while、while、for)
  • 条件语句(if 、if-else、switch)
  • goto语句

1. 算数运算符

  • +  加法运算符
  • -  减法运算符,或负值运算符
  • *  乘法运算符
  • /  除法运算符
  • %  模运算符,或称取余运算符,要求%两侧均为整型

2. 关系运算符

  • <   小于运算符
  • <=  小于等于运算符
  • >   大于运算符
  • >=  大于等于运算符
  • ==  等于运算符
  • !=  不等于运算符

* 关系运算的结果成立就为"真"(比如5>=4),不成立则为"假"(比如5<4)

* 在Java中,关系运算的结果为"真"就返回true,"假"则返回false,用boolean类型的变量来接收

boolean b1 = 5 > 4; // true

boolean b2 = 5 < 4; // false

C语言中没有boolean类型

* 在C语言中,关系运算的结果为"真"就返回1,"假"就返回0

3. 逻辑运算符

  • &&  逻辑与运算符
  • ||  逻辑或运算符
  • !   逻辑非运算符

逻辑运算的结果也只有两个:成立就为"真",返回1;不成立就为"假",返回0

整个逗号表达式的值是最后一个表达式的值,且必须要用()包住。

4. * sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

int size = sizeof(10);
printf("10所占的字节数:%d", size);

输出结果:10是int类型的数据,在64bit编译器环境下,int类型需要占用4个字节

* sizeof一共有3种形式

  • sizeof( 变量常量 )
sizeof(10);

char c = 'a';
sizeof(c); 
  • sizeof  变量常量
sizeof 10;

char c = 'a';
sizeof c;
  • sizeof( 数据类型 )
sizeof(float);

注意,不可以写成sizeof float;

原文地址:https://www.cnblogs.com/gzoof/p/7646458.html