【编程学习C篇2】初识C语言_2023_04_16

      近期对C语言的大致框架浅浅的进行了认识和学习,我目前只是一名编程白板,所以C语言相关的总结难以做到完美,语言可能也不够专业,但我还是想尽可能靠自己把所见所学详尽的表达出来。并不适合想要进行深入学习的伙伴观看,但如果只是想要入门我的总结还是有些学习价值的。

相关知识点的代码和例子可以转到这里观看:C_language_learning: C语言日常的代码练习集锦。 (gitee.com)

一.关于C语言:

为了避免各个厂商的C语言语法产生差异,美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语言最初的标准。其中C11是最新的标准。

二.数据类型举例:

char是字符数据类型  占1个字节  8比特位

short是短整型  占2个字节  16比特位

int是整形  占4个字节  32个比特位

long是长整型  占4个字节  32比特位(VS2019编译器)

long long是更长的整形  占8个字节  64比特位

float是单精度浮点数  占4个字节  32比特位

double是双精度浮点数  占8个字节 64比特位

这些数据类型有各自的大小,它们在被创建时向内存申请的空间不同,可以存各种类型的值。

三.变量:

简单来说变量就是可以被改变的量。

定义变量:

int num1 = 0;

char ch1 = ‘w’;

int和char是变量的类型,后面是变量名,等号后面是赋给它们的值。

int变量初始化时可以给0。

最后需注意定义变量之后不要忘记加;  还要注意区分中英文哦,中文的分号是;

变量在命名时有许多需要注意的点:

1.只能由大小写字母,下划线和数字构成。

2.长度不超过63个字符。

3.要区分大小写。

4.不能有关键字。

变量名开头不要用数字。

变量分为局部变量和全局变量及它们的生命周期:

局部变量作用域简单来说就是它所处的大括号内部,并且进入该作用域变量创建,出作用域变量销毁。生命周期:进入作用域开始,出作用域结束。

全局变量作用域是整个工程,甚至在不同源文件中也可以进行外部声明,进而拿来使用。生命周期:等于整个程序的生命周期。

变量在使用时建议进行初始化,即给你创建的变量附一个初始值,一般为0。

四.常量:

简单来说常量定好后无法被直接改变。

常量的分类:

1.字面常量。

比如:键盘上的数字等。别忘了后面加上;

2.const修饰的常变量。

简单来说就是在创建的变量前面加一个const,最后需要加;

常变量定好后无法被直接改变,但本质上还是变量,和真正的常量在使用上有不同的地方。比如:不能用常变量的名字去初始化数组的元素数量等。

3.#define 定义的标识符常量。

#define定义的就是真正的常量了,且其后面无需加;

4.枚举常量(enum)。

它里面可以定义多个常量,可以初始化它们的值,若不初始化,默认从0开始,依次增大。

注意枚举常量{}后面需要加;

五.字符串:

单个字符用单引号('')引起来,而字符串用双引号("")引起来。

字符有很多种,不仅仅abcd是字符,数字也是字符,还有许多可以在ASCII表中找到。

字符的结束标志是\0,在字符数组中用双引号引起来的一串字符,最后面隐含着\0。

六.转义字符:

转义字符顾名思义就是转变原有的意思。

当编译器把下面的符号解析为其他特殊含义或造成一些错误结合时,可以在前面加一个\,把它变成改变后的意思。

\? 在书写连续多个问号时使用,防止他们被解析成三字母词

\' 用于表示字符常量'

\“ 用于表示一个字符串内部的双引号

\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符

\a 警告字符,蜂鸣

\b 退格符

\f 进纸符

\n 换行

\r 回车

\t 水平制表符 ,水平制表符空的格数可以设置

\v 垂直制表符,垂直制表符空的格数可以设置

\ddd d d d表示1~3个八进制的数字,如:\130 表示字符X

\xdd d d表示2个十六进制数字,如:\x30 表示字符0

七.注释:

注释有两种风格:

C语言风格:/*内容*/  不能嵌套使用,容易出现问题

C++风格://内容  使用起来更方便

八.选择语句:

while语句:

格式:while(判断条件){}

为真(非0)条件成立,为假(0)条件不成立,条件成立为真,条件不成立为假。

这句话需要解释一下:

我们会在括号里输入一些常量或判断条件,当输入的常量为非零数字时,为真,可以进入循环,当输入的常量为0时,为假,不进入循环。若输入判断条件,进行判断后,若符合这个条件,为真,进入循环,若不符合,为假,不进入循环。

下面两个先简单了解一下。

for语句

格式:for(初始值; 判断条件; 初始值变化){}

do...while语句

格式:do{}while();

特点是先执行再判断。

九.函数:

函数可以简化代码,代码复用。

自己可以在mian函数外创建自定义的函数,在需要调用的地方调用。

涉及函数的返回值,函数名,函数的参数相关知识。

自定义函数时{}后面不需要加;

十.数组:

数组有很多分类,有字符数组,整形数组等。

定义方法:

字符数组:char ch1[3] = {'a', 'b', 'c'};

                 char ch2[5] = "abcde";

方块中是数组中的元素数量,可以不写。后面大括号和双引号里面是元素,初始化时可以放入字符,也可以不初始化。

整形数组:int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

初始化时可只放入0,也可以不初始化。

注意:数组的下标从0开始,比如arr[5]代表的是整形数组中的第6号元素,即6。

数组中的元素是可以打印出来的,当然数组还有很多功用,现在暂且不谈。

十一.操作符:

1.算数操作符:

+     -     *  依次为加,减,乘

/  除法,整形除法无法整除时会有余数,想让结果为小数需要除数,被除数中有一个为浮点型

% 取模,即计算整形除法的余数

2. 移位操作符:

>>     <<

这里移的是二进制位,这里暂且不深入研究。

3.位操作符:

&  取地址操作符,可以获取对应变量,数组,函数等的地址。

^     |  暂且不研究

4.赋值操作符:

=  赋值,右值赋给左值

+=  举例:a += 1; 相当于 a = a + 1;

-=     *=     /=  类似于+=

&=     ^=      |=     >>=     <<=  暂不研究

5.单目操作符:(针对一个变量)

!           逻辑反操作

-           负值

+           正值

&           取地址

sizeof      操作数的类型长度(以字节为单位)

~           对一个数的二进制按位取反

--          前置、后置--,前置的是先--后使用,后置的反之。

++          前置、后置++,前置的是先++后使用,后置的反之。

*           间接访问操作符(解引用操作符),通过指针变量中的地址找回对应的对象

(类型)       强制类型转换,可强制改变变量的类型,但也可能因此造成数据丢失,谨慎使用

6.关系操作符:

>     <  大于,小于

>=  大于等于

<=  小于等于

!=   用于测试“不相等”

==      用于测试“相等”

7.逻辑操作符:

&&     逻辑与,所有均成立才成立

||       逻辑或,其中有一个成立即成立

8.条件操作符:(C语言唯一一个三目操作符)

exp1 ? exp2 : exp3  

表示exp1成立吗?若成立,输出exp2,否则输出exp3。

9.逗号表达式:

exp1, exp2, exp3, ..., expN

按照顺序依次计算,最后得出结果。

10.下标引用,函数调用和结构成员:

[]  最常见的就是对数组下标的引用,比如:arr[3]

()  调用函数时使用,里面可输入对应的参数

.  打印结构体中的信息时可用,当然还有很多其他应用场景

->  打印结构体指针中的信息是可用,也有其他应用场景

十二.常见关键字:

auto  和局部变量的自动创建和销毁有关,每个创建局部变量前都隐含着这个,为方便才将其省略

break  终止所在的循环,终止switch,不能直接用于if,除非if属于循环内部的一个子句

case  根据switch表达式,找到对应的case语句进行执行,若该语句无break则继续执行下一个               case语句。

char  字符类型

const  const修饰的常变量

continue  用于循环时,遇到continue返回条件判断,不再执行下面的语句

default  switch表达式找不到对应的case时会跳到default

do  与while配合使用,do...while循环语句

double  双精度浮点数

else  与if搭配使用

enum  枚举常量

extern  用于声明一个在其他源文件中定义的变量或函数

float  单精度浮点数

for  for循环

goto  用于在一个程序中转到程序内标签指定的位置,也可用于跳出深嵌套循环等

if  if语句

int  整形

long  长整型

register  建议存到寄存器中

return  返回值

short  短整形

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

sizeof  返回一个对象或者类型所占的内存字节数

static  可修饰局部变量,全局变量和函数

1.修饰局部变量(静态局部变量):

会改变局部变量的生命周期,直到程序结束生命周期才结束。

2.修饰全局变量:(静态全局变量):

修饰后,该全局变量只能在本源文件内使用。

3.修饰函数(静态函数):

修饰后,该函数只能在本原文件内使用。

struct  结构体类型

switch  一种分支语句

typedef  类型重命名,类型名太长时,可以用这个重命名,用于简化类型名

union  共用体

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

void  无类型

volatile  暂不了解

while  while循环语句

十三.#define宏定义:

例如:#define ADD(x, y) ((x) + (y))  这是宏定义的表达式

#define后依次为:名称,参数,表达式

宏定义是C语言预处理方法中的一种。

十四.指针:

对内存的理解:32系统的内存由32根线高低电位划分为2的32次方个地址,一个地址为1个字节,也就是8比特。地址由16进制表示,int向系统内存申请4个字节位置,即由4个地址构成,地址编号连续,向其存放的整形为15时,15的16进制表示为0xf,剩下的3个字节外加存放0xf的那个字节的剩余空间全部补0,得到00 00 00 0f,由于存储方式为大端存储,数据高位放在低地址,数据低位放在高地址中,故查看内存时显示0f...00。

相关符号:

&  取地址,取出的地址可以存在指针变量中。

*  解引用,用于指针变量前,可根据指针变量里存的地址找到对应的对象

比如:

int num1 = 10;

int* p = &num1;  //将num1的地址存到指针变量p中

*p = 5;  //这样就可以将num1中的值改为5

例子可推广到其他类型哦。

指针变量的大小:

32位系统中:4个字节。

64位系统中:8个字节。

将内存划分为2^32(2^64)个小空间,分别为其编号,写成十六进制后可存在指针变量中,所以指针变量大小必须能够存下这组数字,这就是指针变量大小的确定方式。

十五.结构体:

结构体使得C语言有能力描述复杂类型。

结构体格式:struct stu{};  

从左往右依次为:结构体类型,结构体名称,结构体内容

结构体初始化:struct stu s = {};

打印结构体的内容可以看例子。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值