【2020.04.19记录】从0开始的c语言教程【复习+自学】

从0开始的c语言教程【复习+自学】


c语言教程

#include<stdio.h>//#include是预处理命令,用来引入头文件 stido表示系统文件库 stdio.h是一个头文件(标准输入输出头文件)

int main()//主函数,返回值是int类型 所以要有return 0  标准规定必须是int

{

printf(“hello world! ”);

return 0;//表示退出程序

}


c简介


c环境设置


c程序结构


c基本语法

c的令牌

 关键字、标识符、常量、字符串值,或者是一个符号。

关键字(32个)

关键字

说明

auto

声明自动变量

break

跳出当前循环

case

开关语句分支

char

声明字符型变量或函数返回值类型

const

定义常量,如果一个变量被const修饰,那么它的值就不能再被改变

continue

结束当前循环

default

开关语句中的“其他”分支

do

循环语句的循环体

double

声明双精度浮点型变量或函数返回值类型

else

条件语句否定分支(与if连用)

enum

声明枚举类型

extern

声明变量或函数是在其他文本或本文件的其他位置定义

float

声明浮点型变量或函数返回值类型

for

一种循环语句

goto

无条件跳转语句

if

条件语句

int

声明整形变量或函数

long

声明长整型变量或函数 返回值类型

register

声明寄存器变量

return

子程序返回语句(可以带参数,也可不带参数)

short

声明短整型变量或函数

signed

声明有符号类型变量或函数

sizeof

计算数据类型或变量长度(即所占字节数)

static

声明静态变量

struct

声明结构体类型

switch

用于开关语句

typedef

用以给数据类型取别名

unsigned

声明无符号类型变量或函数

union

声明共用体类型

void

声明函数无返回值或无参数,声明无类型指针

volatile

说明变量在程序执行中可被隐含地改变

while

循环语句的循环条件

C99新增关键字

_Bool _Complex _Imaginary inline restrict//好像就是也没啥用但是不让用?

C11 新增关键字

_Alignas _Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local

标识符

c标识符是用来标识变量、函数、或任何其他用户自定义项目的名称。一个标识符以字母A-Z或者a-z或者下划线_开始,后面跟字母、下划线或数字。标识符中不允许出现标点字符(@ %),区分大小写

符号

分号

每个语句必须以分号结束。

注释  

//第一种  单行注释

 

/*

第二种 多行注释 

*/

 空格

没啥可讲的。


C数据类型

变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

序号

类型与描述1

1

基本类型:
它们是算术类型,包括两种类型:整数类型和浮点类型。

2

枚举类型:

它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。

3

void 类型:

类型说明符 void 表明没有可用的值。

4

派生类型:

它们包括:指针类型、数组类型、结构类型(数组、结构类型统称为聚合类型)、共用体类型和函数类型。

 整数类型

 

类型

存储大小

值范围//这我觉得我背不来啊先放放!

char

1 字节

-128 到 127 或 0 到 255

unsigned char

1 字节

0 到 255

signed char

1 字节

-128 到 127

int

2 或 4 字节

-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647

unsigned int

2 或 4 字节

0 到 65,535 或 0 到 4,294,967,295

short

2 字节

-32,768 到 32,767

unsigned short

2 字节

0 到 65,535

long

4 字节

-2,147,483,648 到 2,147,483,647

unsigned long

4 字节

0 到 4,294,967,295

各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主。

以使用 sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小

#include <stdio.h> 

#include <limits.h>

 int main() 

printf("int 存储大小 : %lu  ", sizeof(int));

return 0;

}

浮点类型

下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:

类型

存储大小

值范围

精度

float

4 字节

1.2E-38 到 3.4E+38

6 位小数

double

8 字节

2.3E-308 到 1.7E+308

15 位小数

long double

16 字节

3.4E-4932 到 1.1E+4932

19 位小数

头文件 float.h 定义了u1s1一直不知道啥是宏,等我悄咪咪去查一下,在程序中可以使用这些值和其他有关实数二进制表示的细节。下面的实例将输出浮点类型占用的存储空间以及它的范围值:

 

#include <stdio.h> 

#include <float.h> 

int main() 

printf("float 存储最大字节数 : %lu ", sizeof(float));

 printf("float 最小值: %E ", FLT_MIN//就单纯不知道啥意思 float.h头文件里定义的吗 );

printf("float 最大值: %E ", FLT_MAX );

printf("精度值: %d ", FLT_DIG );

return 0;

}

void 类型//不知道void类型还有这么多絮絮叨叨的

void 类型指定没有可用的值。它通常用于以下三种情况下:

序号

类型与描述

1

函数返回为空
C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);

2

函数参数为空
C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void);

3

指针指向 void
类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。


 

变量

变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C 是大小写敏感的。

类型

描述

char

通常是一个字节(八位)。这是一个整数类型。

int

对机器而言,整数的最自然的大小。

float

单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。

double

双精度浮点值。双精度是1位符号,11位指数,52位小数。

void

表示类型的缺失。

C 中的变量定义

定义格式 type variable_list;

定义并声明格式 type variable_list = value;

不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。

C 中的变量声明

  • 1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
  • 2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。extern int i; //声明,不是定义
int i; //声明,也是定义


// 函数外定义变量 x 和 y
int x;
int y;
{
//函数内声明变量 x 和 y 为外部变量
  extern int x; 
  extern int y;
}

如果需要在一个源文件中引用另外一个源文件中定义的变量,我们只需在引用的文件中将变量加上 extern 关键字的声明即可。

addtwonum.c 文件代码:

#include <stdio.h> 

/*外部变量声明*/

 extern int x ;

extern int y ;

int addtwonum()

 { 

return x+y;

}

test.c 文件代码:

#include <stdio.h> 

/*定义两个全局变量*/ 

int x=1;

int y=2;

int addtwonum();

int main(void) 

int result;

result = addtwonum();

printf("result 为: %d ",result);

 return 0;

}

//不太明白

当上面的代码被编译和执行时,它会产生下列结果:

$ gcc addtwonum.c test.c -o main
$ ./main
result 为: 3

C 中的左值(Lvalues)和右值(Rvalues)

C 中有两种类型的表达式:

  1. 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。【变量是左值,可以放在赋值号的左边】
  2. 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。【常量是右值,只能放在赋值号的右边】
 
原文地址:https://www.cnblogs.com/saltedfishxiaowang/p/12731694.html