[C语言学习]C语言程序设计基础(一)

简介: [C语言学习]C语言程序设计基础(一)

大家好这里是三岁,C语言是各类语言的基础,由于个人学习需要特别开设了C语言基础专题,内容不一定深入,都是基础知识,还是白话C语言,最简单的方式带领大家学习不是那么容易理解的C语言!(该系列应该每周末更新直到系列结束,有问题的及时留言,会马上修改!)


C语言基础知识



C语言文件后缀名说明:

*代表的是通配符


  • C语言文件:其拓展名为 *.c或者 *.cpp(c++)源文件名
  • *.h 是头文件名(包含文件)可以使用 # include <* .h>进行导入(相当于文件引用)
    (拓展:类似于python中的import


学C语言前需要了解的计算机基础知识


计算机语言


语言是沟通交流的工具(区别在于不同的语言表达方式不同)


而计算机语言也类似:

是人与计算机之间的交流的方式(工具)


计算机语言可以分为低级语言高级语言下面对内容进行了分析:


20210313193638945.png


语言三要素:语法、词汇、语义;

白话三要素:

语法:对应于C语言的一些特定语法:if、else……

词汇:对应的应该是保留的关键字

语义:就是对指定的代码的解析(a=1对应把1赋值给a)


内存

计算机内部存放中间结果的,是临时数据存放的地方。

在内存中按照字节(Byte)划分存储单元

1Byte == 8bit


类型 大小
正整数(无符号整数) 0 ~ 255
带符号数 -128 ~ 127


为什么呢?

计算机中,如果是带符号的第一位就代表了符号 0代表正的、1代表负的。

  • 无符号整数:


20210313202811370.png


带符号数


20210313203758432.png


内存地址:每个字节给予一个从0开始的顺序编号。

小知识:

设在C语言中:char * p存在一个内存中。

变量p分配的内存是__sizeof(unsigned)__B.(固定大小是4)


每保存一个数据就会给出一个地址:数据占据

如果一个数据的内容太大了(占据多个字节时):以首地址(低位地址)作为数据存储单元地址。(假设初始是128,占了6个位置那么他的地址就是128(可以理解为学号))


CPU根据内存地址范围数据(访问需要知道访问地址和访问的大小(字节数))

白话:

访问地址类似于你家的门牌号,几栋几单元

但是还是不知道你在哪个房间,还需要一个访问大小

类似于第几个房间或者是到第几个房间(简易理解不代表正确)


地址是数值(整数类型):经过符号化生成了变量

程序员通用变量访问数据(数据初始化地址)但是没有大小,这个时候就出现了数据类型


类型 首地址 大小 字节数
int a &a sizeof(int) 4
char b &b sizeof(char) 1
double c &c sizeof(double) 8


内存中的数据存放


内存的数据都是以补码的形式进行存储的。

里面分为真值原码反码补码

emmmm这个不好 解释逐个来白话


真码:有正负号的二进制(十进制、八进制、十六进制)数据

例如:12、-1902……

原码:真码的二进制值

例如 :1100、111 0110 1110

反码 :正数的反码等于原码,负数的反码是原码符号位不变其他位取反

补码:正数的补码等于反码,负数的补码是反码符号位不变其他的取反加一


正数


20210313232507588.png


负数


20210314205914159.png


C语言序论


发展史 :源于上世纪60年代末、70年代初

由B语言发展而来。

优点:效率高,可移植性较好。

C语言是结构化面向过程的编程语言。


C语言程序组成


  • C语言程序由函数组成
  • C语言中main() (主函数)是程序的入口
  • 主函数在一个程序里面有且只有一个
  • C语言面向的过程可以是:子程序、函数、模块


函数头:

函数返回值类型 函数名(形参列表)冒号

形参列表:

类型1 参数1, 类型2 参数2,……,类型n 参数n

举例:

int add(int x, int y):


函数主体: 变量申明语句、函数功能完成语句、return返回语句

  • 变量声明语句:


变量类型 变量名 = 变量初始值 (语言解析:把变量初始值赋值给属于变量类型的变量名)

  • 函数功能完成语言:


使用C语言的语法完成有关的内容

  • return返回语句:


就是把需要的计算结果进行返回用于其他函数或代码的使用。

(void类型没有数据返回,int类型有返回是整型,以此类推……)

举例:

#include<stdio.h>  // 文件引用
#define pi 3.14  // 定义pi的值为3.14
void main()  // 定义空主函数(程序入口)
{
  float area,p,r;  //变量声明语句 定义变量
  // 函数功能完成语言,通过输入输出和公示完成内容
  printf("圆的半径:");//输出内容
  scanf("%f,");//输入一个字符串类型数据
  area=(float)pi*r*r;//计算圆的面积
  printf("圆的面积:%6.2f\n",area);//输出圆的面积
  p=(float)pi*2*r;//计算圆的周长
  printf("圆的周长:%6.2f\n",p);//输出圆的周长
  return;//无返回值
}


C语言的执行


  • 编辑—— 编辑源程序(*.c 、 *.cpp)
  • 编译——生成目标程序(*.obj) 将.c文件编译成二进制代码
  • 链接——生成可执行文件(*.exe)


C语言的数据类型—非数字型


非数字类型:字符、字符串

  • 字符:用单引号括起来的一个字符
  • 字符串:用双引号括起来的若干有限个字符序列。

注:一个汉字占两个字符位

字符串内占字节空间数 = 字符数+1(多了一个’\0’)


ASCII码

美国信息交换标准代码:是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准.

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。

后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号


字符在C语言中存放 (或者是在C语言中的表示)是对于ASCII码的码字


image.png


经常使用的字符 对应的ASCII码
‘a’ - ‘z’ 97 - 122
‘A’ - ‘Z’ 65 - 90
‘0’ - ‘9’ 48 - 57
’ ’ (空格) 32
‘’(空) 0


转义字符


所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。


20210313231324479.png

  1. 区分,斜杠:"/" 与 反斜杠:"" ,此处不可互换
  2. \xhh 十六进制转义不限制字符个数 ‘\x000000000000F’ == ‘\xF’


如果'\字符'合起来表示一个特殊字符则发生转义,如果不符合则不能够表示特殊字符 应该理解为两个字符。


今天的资料就整理到这里了,非常感大家的关注,如果好就来个一键三连吧!


目录
相关文章
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
2月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
2月前
|
C语言
C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
|
2月前
|
存储 算法 C语言
C语言程序设计核心详解 第一章:数制及转换与ASCII码
本专栏旨在夯实C语言基础,涵盖基础知识与进阶内容,助力解决自命题考试和考研问题,为数据结构与算法设计奠定坚实基础。内容包括数制及其转换、ASCII码、内存管理、机器码等,重点讲解二进制、八进制、十六进制的概念与转换方法,并介绍C语言的结构、数据类型和标识符规范。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第九章 结构体与链表概要详解
本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
|
2月前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。