一.初识C语言

目录

一 关于main函数

二 数据类型

三.变量与常量

1.自定义变量

2.变量的分类 

3.变量的作用域与生命周期

1.作用域

2.生命周期

4.常量

常量的分类

四.字符串和转义字符

1.字符串

(1)定义

(2)字符串结束的标志

(3)字符串的存储

2.转义字符

(1)有哪些转义字符

(2)0  ‘0’  \0 三者的区别

五.操作符

六.关于static的特性

1. static修饰变量

2. static修饰函数

七.关键字

1.常见关键字的总结及分类

(1)类型

(2)循环

(3)选择分支

(4)其他类型

2.关键字register--寄存器

(1)关于寄存器:

(2)寄存器register的使用

3.关键词typedef

八.初识指针

1.指针是做什么的?

2.指针变量的大小

 九.结构体

补充知识点printf格式化输入一览:


一 关于main函数

主要出错点:

1.同一个c语言代码中出现了多个main函数,或者同一个工程(项目)中出现了多个main函数。

2.main函数后面的括号写成了{},[],《》等等,注意一定是()

二 数据类型

有哪些数据类型?分别占多少字节?

char                //字符型                  //1个字节

short               //短整型                  //2个字节

int                   //整型                      //4个字节

long                //长整型                  //4

long long        //更长的整形           //8

float                //单精度浮点型       //4

double            //双精度浮点型       //8

 某些数据类型所占内存大小根据操作系统位数32/64位或编译器决定,但满足

sizeof(long)>=sizeof(int)

 字节是计算机中的存储单位,下面是计算机常见的存储单位。

bit      比特

byte   字节

KB

MB

GB

TB

PB

1byte==8bit

1KB==1024byte

1MB==1024KB

1GB==1024MB

1TB==1024GB

1PB==1024TB 

三.变量与常量

1.自定义变量

1.只能由字母(包括大写和小写)、数字和下划线( _ )组成。

2.不能以数字开头。

3.长度不能超过 63 个字符。

4.变量名中区分大小写的。

5 .变量名不能使用关键字。

2.变量的分类 

变量分为局部变量和全局变量

区分方法:判断在main函数的大括号外面还是大括号里面

3.变量的作用域与生命周期

1.作用域

作用域( scope )是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

(1) 局部变量的作用域是变量所在的作用范围,一般以{ }为始末

(2) 全局变量的作用域为整个工程。 

2.生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的这一个时间段

(1) 局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。

(2) 全局变量的生命周期:整个程序的生命周期。

4.常量

常量的分类

我们将变量分为以下四种:

1.字面常量

2.const修饰的常变量

3.#define修饰的标识符常量

4.枚举常量

(1)字面常量

不加定义或修饰的量。

(2)const修饰的常变量

        被const修饰过的变量其值不可改变,若改变编译器会报错。但const修饰的常变量本质是一个变量,只不过具有了常量的性质。

注:本质上是变量,如      const int n; int a[N] ;    编译器会报错!!

(3)#define修饰的标识符常量-----宏定义

相当于定义了一个‘全局常量’,不可修改,句末不加分号。

(4)枚举常量

一一列举的意思,现阶段学艺不精,后续文章再补上。

四.字符串和转义字符

1.字符串

(1)定义

"hello world.\n"

形如这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串

(2)字符串结束的标志

字符串的结束标志是一个\0的转义字符。在计算字符串长度时候\0是结束标志,不算做字符串内容,且\0不一定显示在字符串中。

(3)字符串的存储

1.存储:

如下段代码所示;

 

为什么第二次打印会出现烫烫烫呢?

这是因为字符串的结束标志是\0,第一个数组中,以字符串形式存储,末尾自带\0,而第二个数组中存储的是单个字符,打印时找不到\0的结束标志,就可能出现图示情况啦。

2.字符串的长度

如下图所示:常用strlen 求长度。

 原理与上述相同,第二次strlen没有找到\0所以打印随机值。

2.转义字符

(1)有哪些转义字符

①转义字符  \?

这个转义字符,主要是避免三字母词使用的。

②转义字符\'  \”  \\

   这三个转义字符的作用是在想要打印出 '  "  \这三种字符时候,我们无法直接打印出来,得用转义字符来表达这些字符

③转义字符\ddd  \xdd

这两个转移字符跟其他的转义字符有些区别

\ddd这个转义字符中,他会将后面的1~3个八进制数字先转换成十进制数字,然后在ASCII表中找到对应的字符。这个字符就是最终的结果

同理

\xdd这个转义字符也是将后面的2个十六进制数先转换成十进制数,然后在ASCII表中找出对应的字符。这个字符就是最终的结果。

ASCII表

(2)0  ‘0’  \0 三者的区别

'0'的ASCII值为48,是字符。

0和'\0'本质一样,只是同一种东西的不同表现形式,0是数字形式,'\0'是字符形式。

五.操作符

常见的操作符(不作过多详解)
1.算术操作符  +  -  *  /   %

2.移位操作符  >>  <<

3.位操作符    &  |  ^

4.赋值操作符   =    +=   -=   *=   /=    %=   &=   ^=   |=   >>=   <<=

5.单目操作符:

!              逻辑反操作
-              负值
+             正值
&             取地址
sizeof     操作数的类型长度(以字节为单位)
~             对一个数的二进制按位取反
--             前置、后置--
++           前置、后置++
*              间接访问操作符(解引用操作符)
(类型)     强制类型转换

注:后置++/--表示整个语句结束后变量在自加

       前置++/--表示整个先自加,在进行语句。

6.关系操作符  >    >=     <    <=     !=     ==

7.逻辑操作符   &&  ||  !

8.条件操作符(三目运算符) 

     exp1 ? exp2 :exp3            如果exp1为真,则输出exp2,否则输出exp3

9.逗号表达式     exp1,exp2,……,expn;

六.关于static的特性

1. static修饰变量

    a. 函数中局部变量:

    声明周期延长:该变量不随函数结束而结束

    初始化:只在第一次调用该函数时进行初始化

    记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值

    存储位置:不会存储在栈上,放在数据段

   b. 全局变量

    改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用

   c. 修饰变量时,没有被初始化时会被自动初始化为0

2. static修饰函数


   改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用

七.关键字

1.常见关键字的总结及分类

(1)类型

auto 是自动的意思,我们在使用局部变量的时候,有这样一个特点,局部变量都是自动创建自动销毁的,所以局部变量也叫做自动变量,只不过后来由于局部变量都是auto 类型的,后来没有人这样写了

char

int

short

long

float

double

signed有符号的

unsigned无符号

static

void

const

enum

union

struct

typedef

(2)循环

break 打破循环时候使用

continue 终结本次循环(从该语句往下的部分不再执行),执行下一轮循环

do

while

for

(3)选择分支

if

else

switch

case

break

default

goto   //慎用

(4)其他类型

extern              //声明外部符号

register            //寄存器

return               //函数返回

sizeof               //计算所占内存大小

volatile             // 后面详细讲

2.关键字register--寄存器

(1)关于寄存器:

 

如图所示: 从上到下,依次是寄存器,高速缓存,内存,硬盘,网盘(网盘一般不在电脑上,就跟我们的百度网盘一样)。

网盘一般几个T,硬盘一般500G,内存一般8G/16G,高速缓存一般是xxM,寄存器一般是几个字节。所以是按照内存大小才把他看作金字塔的分布了。

有此结论,越往上,存储大小越小,速度越快,造价越高。

(2)寄存器register的使用

#include<stdio.h>
int main()
{
    register int a=10;
    return 0;
}

如图所示:这段代码的意思是,建议将a放在寄存器中,注意,仅仅是建议,具体是否放在寄存器中取决于编译器,当然,我们如今的编译器已经是相当聪明了,他在编译的时候就会考虑到这个是否该放在寄存器中,使我们的效率大幅度提高。

3.关键词typedef

将类型重命名

#include <stdio.h>

typedef unsigned int uint;
int main()
{
    unsigned int a=10;
    uint b=5;
}

 如图所示:将类型重命名,也就是重新定义了一个类型,此时uint和unsigned int 具有相同的类型,uint也就可以用来声明变量了。

typedef常用在结构体。

八.初识指针

1.指针是做什么的?

想了解指针,必须先了解内存是什么?

内存是计算机上的一种存储空间,程序运行时会载入内存,存储数据时也会申请内存。

每个内存单元都有自己的编号,而内存单元的编号被称为地址

在C语言中,指针变量会存储被指向的变量的地址。

所以说:指针存放的是地址。

2.指针变量的大小

 指针变量的大小与其所指向类型无关,只与机器是多少位有关系。

 32位4个字节   64位8个字节。

 九.结构体

有一种类型是自定义类型,自定义类型分为三种,结构体,联合体,枚举。

当我们在描述一个人的时候需要描述它的身高,体重,姓名性别,年龄等等。

当我们需要了解一本书的时候,需要描述它的书名,作者,出版社,定价等。

这些都是一种比较复杂的类型,这时候就需要结构体了。

补充知识点printf格式化输入一览:

 


本篇到此结束,感谢您的观看!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殿下p

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值