当前位置: 首页 > news >正文

C语言基础知识入门

 一:C语言结构

1.1  C语言允许分割代码和数据

可以使用具有局部(临时)变量的函数或代码块来实现这种特性

代码块(程序块)是逻辑上连接在一起的一组程序语句,可以当作一个单元来使用

int Sum(int a)
{
	int iSum = 0;
	int i = 1;
	while(i <= a)
	{
		iSum = iSum + i;
		i++;
	}
	return iSum;
}

1.2  由一个或者多个.C文件构成

每一个.C文件可以由预处理命令、全局变量声明、函数和注释组成

#include <stdio.h>	/*预处理命令*/
int count=0;		/*全局变量声明*/
int main(void)          /*函数*/
{			
	printf("Hello World\n");
	return 0;
}

1.3  C程序被分割成一个个的函数,有且仅有一个main函数

程序执行时先将控制权传递给main函数(主函数)

函数由函数的首部(函数第一行)和函数体(一对大括号中的内容)组成

#include <stdio.h>	/*预处理命令*/
int count=0;		/*全局变量声明*/
int main(void)          /*函数*/
{			
	printf("Hello World\n");
	return 0;
}

1.4  函数的首部:类型、名称、参数类型和参数名,圆括号内参数有无都可以,但括号不能省略

函数定义后面接一个大括号{}叫分隔符

{ 代表代码块开始,} 代表结束

/*函数名:int max(int a,int b)
  函数功能:求最大值
  函数参数:
  函数返回值:*/
int max(int a,int b)
{		
	if(a>b)
		return a;
	else
		return b;
}

1.5 函数由声明部分和执行部分组成

C语言使用分号;表示语句结束

不识别回车、空格或制表符(这些符号使代码美观)

建议一行写一条语句,一条语句可以跨多行

#include <stdio.h>	/*预处理命令*/
int max(int a,int b);	/*函数原形声明*/
int main(void){		/*函数*/
	int num1,num2,result;
	printf(“请输入两个整数:”);
	scanf("%d%d",&num1,&num2);
	result=max(num1,num2);
	printf(“max=%d\n“,result);
	return 0;
}

1.6 注释

注释用于描述特定的命令、函数或程序,增强程序的可读性

多行注释用/*开始,用*/结束(标准C语言)

一行注释用//标出

二:C标准库

C编译器都提供有标准函数库

DOS下的C编译器Turbo C 2.0大约有440个函数

BC++2.0大约有500多个函数

VC++除了标准的C运行库及C语言扩展外,还有600多个Windows API,以及VC++中的类库(MFC)

Linux下的C也有很多扩展及系统函数

程序员编写的函数可以放在库中,然后在需要时使用

有些编译器允许将函数放在标准库中

有些编译器需要创建单独的库

三:C程序执行过程 编写过程

四:数据类型

4.1 变量

程序要为每一项数据分配内存,通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。

需要多少内存

数据被存储在哪里

操作系统负责集中变量在内存中的地址

要引用内存空间中的值,只需指定变量名

4.2 常量

常量就是一个保持不变的值

示例
          •9    数字/整型常量
•9.3  数字/浮点常量
•“NAME”    字符串常量
•‘A’    字符常量
•符号常量

#define NUM 100

提高代码的可读性,还可以做到一改全改

•使用const关键字

       const int  iNum= 100; 

4.3 C标识符

•变量、函数、标签和其他各种用户定义的对象的名称都称为标识符
•正确的标识符名称

  A  a rena、s_count、marks40、class_one

•不正确的标识符示例

  1sttest、oh!god、start... end

•标识符的长度可以是任何合适的数值,但是各种编译器能够识别的变量中的字符数目有所不同
•C 语言中的标识符区分大小写

4.4 C关键字

•在一个特定语言的上下文中有特殊意义的单词。是标识符的一个特殊的集合。在C语言中有预先定义好的特殊意义。不能用于其他任何目的。
•所有的数据类型都是保留的关键字
•所有的关键字小写
C语言的关键字共32个

4.5 C系统标识符

•系统内置的标识符指的是系统函数名称、系统定义的结构体名称、系统定义的符号常量名称等
•例如:printf、FILE、date、RED等
•以上各种标识符不要用于用户定义的标识符上,防止发生不必要的错误

4.6 C数据类型

 

4.7 数据类型的使用

•数据类型描述了变量中将存放的数据的种类
•数据类型位于变量名的前面
•例如:数据类型 int 将位于变量名 varName 的前面
•变量声明必须放在变量使用之前(先定义后使用)
•一般放在函数体的开头部分,可执行代码的前面
•变量声明也可以放在代码块的前面

 

4.8 C变量的赋值

•程序中常常需要对一些变量预先设定初始值
•定义时初始化变量

   Datatype variablename = value;

  例如:int num1,num2 = 12;

•定义后初始化变量

  variablename = value;

  例如:int num;

                  num = 12;

五:变量在内存中的存储

void main()
{
	int nNum = 300;
   //0x0000012C
	char cStr = ‘A’;
    //0x41
	char cCh ;
	printf(“%d\n”, nNum);
	printf(“%c\n”,cStr);
	printf(“%c\n”,cCh);
}

 

六:C基本数据类型

6.1 int类型

6.2 float类型

 

6.3 double类型

 

6.4 char类型

6.5 ASCII码表

6.6 void类型

 6.7 派生数据类型

6.8 数据输出格式

6.9 数据类型示例

#include <stdio.h>
int main ()
{
	char sex = 'F';	  	/*用M和F代表性别*/
	float length = 13.5f;	/*声明length,长度可能带有小数位*/
	double area;		/*声明area */
	double pay;		/*money有角和分*/
	short int age = 89;	/*人类的年龄现阶段不可能超过150*/
	return 0;
}

选择数据类型时首先考虑变量用来存放什么类型值,

然后再根据存放值的最大值和最小值,进一步选择适当的类型和类型的修饰符 

相关文章:

  • 闲暇之际敲敲代码,记录Leetcode刷题Day-01
  • 2021年下半年信息安全工程师上午真题及答案解析
  • Dinky,让 Flink SQL 纵享丝滑
  • Docker | docker容器导出以及常见问题的处理
  • 【node进阶】深度解析之Express框架入门
  • 【重温Linux】一、Ubuntu系统一些常识性的东西(这节持续更新)
  • mysql group_concat 与 union 联合查询漏洞,数据列最大长度为341
  • ISO27001认证需要准备什么资料?
  • 腾讯研究成果登 Nature 子刊:scBERT 攻克单细胞测序数据分析痛点
  • Vue2和Vue3的区别——实例创建、响应式数据代理、v-for和v-if优先级、生命周期
  • 跑步装备推荐:2022年跑步装备选购清单
  • 【云原生之Docker实战】使用Docker部署Pichome个人相册系统
  • Docker部署go项目
  • 软件测试秋招技术面试(面经)
  • CSS进阶篇——伪类 (pseudo classes)
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • co模块的前端实现
  • CSS3 变换
  • echarts花样作死的坑
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6语法详解(一)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JS笔记四:作用域、变量(函数)提升
  • LeetCode算法系列_0891_子序列宽度之和
  • Next.js之基础概念(二)
  • Object.assign方法不能实现深复制
  • PHP CLI应用的调试原理
  • php面试题 汇集2
  • Python利用正则抓取网页内容保存到本地
  • SpriteKit 技巧之添加背景图片
  • vue:响应原理
  • webgl (原生)基础入门指南【一】
  • 大型网站性能监测、分析与优化常见问题QA
  • 对超线程几个不同角度的解释
  • 数据结构java版之冒泡排序及优化
  • 思否第一天
  • 我看到的前端
  • 中文输入法与React文本输入框的问题与解决方案
  • 字符串匹配基础上
  • 1.Ext JS 建立web开发工程
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • $.ajax()
  • (13)Hive调优——动态分区导致的小文件问题
  • (C#)获取字符编码的类
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (十三)Maven插件解析运行机制
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)程序员疫苗:代码注入
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**