初始C语言-1(数据类型、变量、常量、变量的作用域和生命周期、字符串+转义字符+注释)

目录

一、C语言

 C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)

C语言发展至今都是排行前三的计算机语言。

随着物联网,万物互联,以及嵌入式开发和单片机开发,C语言是必然的趋势。

 C语言的标准:主流的为 C89 C90

计算机语言的发展: 2进制 – 汇编语言 – B语言 – C语言

 二、第一个C语言程序

C语言的代码是从main函数的第一行开始执行的main函数是程序的入口 – 有且仅有一个main函数 – 可以在任意位置

 三、数据类型

 –C语言里有哪些单位?

 –为什么出现这么多数据类型?

四、变量

1)变量

1.变量的命名

2.变量的分类

五、变量的作用域和生命周期

1. 作用域:

1)局部变量的作用域:是局部变量所在的局部范围

 2)全局变量的作用域:整个工程  

2.变量的生命周期

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

全局变量的生命周期:整个程序的生命周期

六、常量

1.字面常量 

2.const 修饰的常量:本质上是个变量,但是具有了常属性,不能被修改

验证const 修饰的常量:本质是个变量 

**下面的代码在支持C99的编译器上可以编译的 

 3.#define定义的标识常量

4.枚举常量 

枚举 – enum

容易被一一列举出来的值:

 七、字符串+转义字符+注释

1.字符串

C语言表示字符:用单引 号。例如:'a'  '1'   '!'

C语言表示字符串:用双引号。 例如:"abc"  

注意:字符串的结束标志是一个 \0 的转义字符,不算做字符串的内容。例如:"abc"  –> a  b  c  \0 

2.转义字符  

常见用法:

*特别的:三字母词:  ??后加一个字符 

例如:??) 转义为 ]

思考

 3.注释

给代码进行注释,解释每段代码的意思

用双左斜杠 // 注释单行内容 (C++的注释风格)  (推荐使用:支持嵌套)

用 /**/  给多行注释(C语言的注释风格) (不推荐:不支持嵌套使用)


一、C语言

 C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)

C语言发展至今都是排行前三的计算机语言。

随着物联网,万物互联,以及嵌入式开发和单片机开发,C语言是必然的趋势。

 C语言的标准:主流的为 C89 C90

计算机语言的发展: 2进制 – 汇编语言 – B语言 – C语言

 二、第一个C语言程序

C语言的代码是从main函数的第一行开始执行的
main函数是程序的入口 – 有且仅有一个main函数 – 可以在任意位置

 写一个c代码,在屏幕上打印 hello world

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
//主函数
int main()
{
//printf 是一个库函数 - C语言的标准库中的一个现成的函数,直接就能使用
//功能:在屏幕上打印信息
//输出函数,打印函数,使用前一定要包含头文件 stdio.h
//stdio.h 标准输入输出头文件printf("hello world\n");return 0;
//}

主函数的其他写法 


//推荐
//int main()
//{
//
//	return 0;
//}//可以这样写
//int main(void)
//{
//
//	return 0;
//}//古老的写法 - 不建议
//void main()
//{
//}

 

 三、数据类型

 –C语言里有哪些单位?

bit        – 比特
byte    – 字节 1byte = 8bit
KB                1KB=1024byte
MB                1MB=1024KB
GB                1GB=1024MB
TB                1TB=1024GB
PB                1PB=1024TB

int main()
{printf("%d\n", sizeof(char));		//1字节printf("%d\n", sizeof(short));		//2printf("%d\n", sizeof(int));		//4printf("%d\n", sizeof(long));		//4		//C语言标准:sizeof(long)>=sizeof(int)printf("%d\n", sizeof(long long));	//8printf("%d\n", sizeof(float));		//4printf("%d\n", sizeof(double));		//8return 0;
}
int main()
{int num = 20;		//向内存申请4个字节空间存储 20 这个整型数据char ch = 'b';		//向内存申请1个字节空间存储 b 这个字符数据return 0;
}

 –为什么出现这么多数据类型?

用合适的类型,存储各种数据
内存利用率高,写代码更灵活

四、变量

1)变量

1.变量的命名

  1. 由字母(包括大写和小写),下划线(_),数字组成!
  2. 不能由数字开头!
  3. 变量名不能使用关键字!
  • 长度不能超过63个字符
  • 变量区分大小写
  • 变量名尽量起的有意义
     

2.变量的分类

  1. 局部变量:在{}内部定义的变量就是局部变量
  2. 全局变量:在{}外部定义的变量就是局部变量
     
int main()
{int num = 10;//num是变量,创建变量时,最好给个初始值printf("%d\n", num); //10num = 20;printf("%d\n", num); //20return 0;
}

 全局变量和局部变量的名字可以相同,但是在使用时局部优先

 局部变量里的名字不能相同

int num = 100;//全局变量
int a = 1000; int main()
{int a = 10;//局部变量printf("%d\n", a);//int a = 20;//创建的局部变量不能重名!!//printf("%d\n", a);return 0;
}

五、变量的作用域和生命周期

 

  1. 局部变量的作用域:是局部变量所在的局部范围
  2. 全局变量的作用域:整个工程  (缺点是不安全)

1. 作用域:

1)局部变量的作用域:是局部变量所在的局部范围

void test()
{printf("%d\n", a);//无法使用
}int main()
{int a = 10;printf("%d\n", a);{int b = 20;printf("%d\n", b);}//printf("%d\n", b); //b不在作用域里,无法使用printf打印出来return 0;
}

 2)全局变量的作用域:整个工程  


int a = 100;void test()
{printf("2:%d\n", a);
}int main()
{printf("1:%d\n", a);test();return 0;
}//声明外部符号(当使用此工程项目的另一个文件的变量时)
extern int g_val; //另一个文件下的变量g_valint main()
{printf("%d\n", g_val);return 0;
}

2.变量的生命周期

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

  2. 全局变量的生命周期:整个程序的生命周期

int main()
{{	//进入a的作用域,生命周期开始,再此作用域里a可以使用int a = 10;printf("%d\n", a);}//出a的作用域,生命周期结束//printf("%d\n", a); //a不在作用域里,无法使用printf打印出来return 0;
}

六、常量

生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等) 有些值是可变的(比如:年龄,体重,薪资)

  1. 字面常量
  2. const 修饰的常量
  3. #define定义的标识常量
  4. 枚举常量

1.字面常量 

//1.字面常量
int main()
{100;//整型字面值'w';//字符字面值3.14;//浮点型的字面值"abcdef";//字符串常量return 0;	
}

2.const 修饰的常量:本质上是个变量,但是具有了常属性,不能被修改

//2.const 修饰的常变量
int main()
{const 常属性:值不能被改变const int num = 10;	//本质上是个变量,但是具有了常属性,不能被修改printf("%d\n", num);num = 20;  //err;无法修改值printf("%d\n", num);return 0;
}

验证const 修饰的常量:本质是个变量 

//数组//const int n = 10;	//int arr[n] = { 0 };	//n虽然被const修饰,具有常属性,不能被改变,但是本质上还是变量,所以不能用来指定数组的大小

**下面的代码在支持C99的编译器上可以编译的 

    //C99中,引入了:变长数组的概念,变长数组的大小是可以使用变量来指定的,但是数据不能被初始化
    //vs2013/vs2019是不支持C99的 ;Linux系统:gcc编译器 支持C99
    int n = 10;
    int arr[n] = { 0 };     

 

 3.#define定义的标识常量

//3.#define定义的标识常量#define MAX 1000		//可以在全局定义int main()
{printf("%d\n", MAX);//MAX = 2000; //无法修改常量MAX#define MIN 0		//可以在局部定义printf("%d\n", MIN);int arr[MAX];	//可以运用在数组return 0;
}

4.枚举常量 

枚举 – enum

容易被一一列举出来的值:

性别:男,女,保密
三原色:RGB(红绿蓝)
血型:A B O AB RHB

//4.枚举常量
//枚举 - enum//声明的一个表示性别的枚举类型
enum Sex
{//下面三个符号是Sex这个枚举类型的未来的可能的值//枚举常量MALE=5,	//默认为0,可以赋初值FEMALE,	//1SECRET	//2
};int main()
{enum Sex s = MALE;printf("%d\n", MALE);	printf("%d\n", FEMALE);	printf("%d\n", SECRET);	return 0;
}

 七、字符串+转义字符+注释

1.字符串

  1. C语言表示字符:用单引 号。例如:'a'  '1'   '!'

  2. C语言表示字符串:用双引号。 例如:"abc"  

  • 注意:字符串的结束标志是一个 \0 的转义字符,不算做字符串的内容。例如:"abc"  –> a  b  c  \0 

#include<string.h>
int main()
{//char c1 = 'a';//char c2 = 'b';//数组//字符数组//char arr1[] = "abc";	//调试后发现:a b c \0 共四个字符//char arr2[] = { 'a', 'b', 'c' };//调试后发现:a b c 共3个字符//printf("%s\n", arr1);//打印 abc ,打印字符串,直到\0才终止打印//printf("%s\n", arr2);//打印 abc烫烫烫bc ,打印字符串,没有找到\0是不会停下来的char arr1[] = "abc";	//调试后发现:a b c \0 共四个字符char arr2[] = { 'a', 'b', 'c' };//调试后发现:a b c 共3个字符//strlen是一个库函数,专门打印字符串长度。在求字符串长度时,统计\0之前出现的字符的个数。int len = strlen(arr1);	//a b c \0printf("%d\n", len); //3len = strlen(arr2);//a b c .....\0printf("%d\n", len); //15(随机值),因为abc之后不知道\0在哪,所以一直找,直到\0才终止,说明此时\0前的字符有15个return 0;
}

2.转义字符  

 

 


int main()
{printf("abc\ndef");// \n - 换行
//结果为:
//abc
//defprintf("abc\0def");// \0 - 字符串结束标志
//结果为:
//abcreturn 0;
}

常见用法:

int main()
{printf("%c\n", 'a');printf("%c\n", '\'');//想打印 ' 这个字符时,也需要转义\'printf("%s\n", "abc");printf("%s\n", "\"");//想打印 " 这个字符串时,也需要转义\"printf("%s\n", "abc\\ndef");//想打印 abc\ndef 这个字符串时,也需要转义\为\\printf("\a");//把声音调大一点,可以听到警告蜂鸣的声音printf("ab\bcdef");//acdef ,\b - 退格,把b删掉了printf("%c\n", '\130'); //ASCII码值为88的字符 - H八进制 130 转换为十进制 1*8^2 + 3*8^1 + 0*8^0 =64+24+0 =88printf("%c\n", '\x63');//ASCII码值为99的字符 -c十六进制 163 转换为十进制 6*16^1 + 3*16^0 =96+3 =99return 0;
}

 

*特别的:三字母词:  ??后加一个字符 

例如:??) 转义为 ]


//三字母词
//??) ---> ]
int main()
{printf("(are you ok??)");//想要打印(are you ok??) 变成了(are you ok]//所以在连续的?时,转义\?\?return 0;
}

思考


  

    printf("%d\n", strlen("abcedf"));                //6
    printf("%d\n", strlen("c:\test\628\test.c"));//14  

 3.注释

给代码进行注释,解释每段代码的意思

  1. 用双左斜杠 // 注释单行内容 (C++的注释风格)  (推荐使用:支持嵌套)

  2. 用 /**/  给多行注释(C语言的注释风格) (不推荐:不支持嵌套使用)

int main()
{/*int a = 10; //创建一个变量a ,赋初值为10*/return 0;
}

 

 

 

查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/270314.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

初始C语言-1(数据类型、变量、常量、变量的作用域和生命周期、字符串+转义字符+注释)

目录 一、C语言 C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)
C语言发展至今都是排行前三的计算机语言。
随着物联网,万物互联,以及嵌入式开发和单片机……

[附源码]计算机毕业设计疫情网课管理系统Springboot程序

项目运行
环境配置:
Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术:
SSM mybatis Maven Vue 等等组成,B/S模式 M……

JavaWeb(二)

下面的知识主要就是Servlet,JSP,EL这个顺序去总结,把基础打扎实
Servlet
首先咱们肯定一直听说Servlet,经常说servlet容器,但是具体Servlet是个啥呢。咱们今天就去深入探讨一下。 咱们看一下菜鸟权威教程的解释 Java……

【SpingBoot定时任务】Spring自带@Scheduled、异步多线程@Async、quartz框架 定时任务示例

文章目录springboot定时任务1、基于注解(Scheduled)2、异步多线程使用定时任务3、使用quartz实现定时任务使用Springboot整合Quartz定时任务框架springboot定时任务 在springboot环境中,实现定时任务有两种方案: 使用 Spring 自带的定时任务处理器 Sched……

永磁同步电机恒压频比(V/F)开环控制系统Matlab/Simulink仿真分析及代码生成到工程实现

文章目录前言一、 恒压频比(V/F)控制原理二、永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析2.1.仿真电路分析2.1.1.恒压频比控制算法2.1.2.输出处理2.1.3.主电路2.2.仿真结果分析2.2.1.设定目标转速为1200r/min2.2.1.设定目标转速为变化值三……

计网个人作业03

R14. True or false?
a
a. Suppose Host A is sending a large file to Host B over a TCP connection. If the sequence number for a segment of this connection is m, then the sequence number for the subsequent segment will necessarily be m 1.
假设主机A通过一……

04_openstack之Glance镜像和云主机类型

目录
一、环境准备
二、云主机类型管理
1、基本概念
2、创建云主机类型
三、镜像管理
1、基本概念
2、COW介绍和qcow2创建
3、管理页面创建镜像 一、环境准备
部署openstack私有云环境,步骤:02_openstack私有云部署_桂安俊kylinOS的博客-CSDN博……

PowerShell禁止运行脚本

运行脚本报错(pnpm -v) pnpm : 无法加载文件 D:\win11\program\NVM\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mi
crosoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1pnpm -v……

C++11标准模板(STL)- 算法(std::set_difference)

定义于头文件 <algorithm>
算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。注意范围定义为 [first, last) ,其中 last 指代要查询或修改的最后元素的后一个元素。 计算两个集合的差集
std:……

【springboot2.0】arthas tunnel server监控配置方法

arthas配置方法:
1.增加pom,增加配置文件application.yml里面内容:
pom.xml:
<dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-spring-boot-starter</artifactId><version>3.6.……

深度学习快速参考:11~13

原文:Deep Learning Quick Reference 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实现目……

基于copula的风光联合场景生成与缩减

目录
1 主要内容
风光出力场景生成方法
2 部分程序
3 程序结果
4 程序链接
点击直达! 1 主要内容
该程序方法复现《融合风光出力场景生成的多能互补微网系统优化配置》风光出力场景生成部分,目前大多数研究的是不计风光出力之间的相关性影响&amp……

TS 使用自动提示生成对象中的键

TS 使用自动提示生成对象中的键
使用 plain object 而不是 class 的原因主要是在于 redux 中保存的对象需要为可序列化的对象。当然,具体操实现的时候肯定是可以无视这个需求的,不过 Redux 团队强烈建议使用可序列化对象,具体的官方文档说明……

Spring Boot概述(一)

1. SpringBoot 概述
1.1 SpringBoot 概念
SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的……

计算机笔试/面试常见逻辑题/智力题汇总

说明:按种类汇总,难度不分先后,做了分级罗列,方便后续扩充,大家有比较有意思的题目可以在讨论区讨论。 下面有的题题解相对复杂的直接参考了网上的一些解答,而有的题解我认为并不好的也做了补充&#xff0c……

OpenAI文档翻译——搭建第一个自己的ChatGPT应用

这篇主要是讲了重头到位创建一个基于OpenAI API的应用程序的过程,同时给出了Node.js、Python版本的实例代码。应用程序的构建总体来说是很简单的就是一个接口调用,前提是我们需要提供密匙。
如果想要获取更好的结果返回一个是可以给模型提供一些列子从而……

python以及PyCharm工具的环境安装与配置

这里以Windows为例
Python的安装
当然是到Python官网下载咯,https://www.python.org/downloads/点我直达,如图: 可以下载最新版本,可以下拉找到之前特定的版本安装,如图: 这里先择的是最新版的进行安装……

JavaScript【六】JavaScript中的字符串(String)

文章目录🌟前言🌟字符串(String)🌟单引号和双引号的区别🌟属性🌟 length :字符串的长度🌟 方法🌟 str.charAt(index);🌟 str.charCodeAt(index);🌟 String.fromCharCode(……

获取文件MD5小案例(未拆分文件)

文章目录前端获取MD5后端获取MD5前端获取MD5
1、引入js
<script src"js/spark-md5.min.js" type"text/javascript"></script>注:spark-md5库GitHub链接 2、这里是一个按钮和被隐藏调的<input/>标签 <body><button……

Java 进阶(15)线程安全集合

CopyOnWriteArrayList
线程安全的ArrayList,加强版读写分离。
写有锁,读⽆锁,读写之间不阻塞,优于读写锁。
写⼊时,先copy⼀个容器副本、再添加新元素,最后替换引⽤。
使⽤⽅式与ArrayList⽆异。
示例……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注