初步了解c语言(二)

这篇具有很好参考价值的文章主要介绍了初步了解c语言(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注:此篇文章仅限初步了解,本小白后续会持续进行详解。

变量的使用

  我们通过加法来理解它的使用。

#include<stdio.h>
int main()
{
	int num1 = 0;
	int num2 = 0;
	//给num1和num2赋予两个新的值
	scanf("%d %d", &num1, &num2);
	//求和
	int sum = num1 + num2;
	printf("sum = %d\n", sum);
	return 0;
}

📙一些简单解释:
1.scanf和printf是库函数,即c语言的编译器提供的现有并可以直接使用的函数函数,在使用这两个库函数时,需要包含头文件<stdio.h>
2.scanf函数的作用:输入数据——将数据从键盘读取到内存中。
  printf函数的作用:输出数据——数据从内存输出到屏幕上。
3.初步了解c语言(二)


变量的作用域和生命周期

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

📗简单的来讲,变量哪里可以用,哪里就是它的作用域。

  局部变量作用域示意图:

初步了解c语言(二)
全局变量作用域:
🌟在任意地方都可以使用!!!

通过两个代码来说明这个问题:


1.一个文件内:

#include<stdio.h>
int a = 10;
//函数测试
void test()
{
	printf("第三个:%d\n", a);
}
int main()
{
	printf("第一个:%d\n", a);
	{
		printf("第二个: %d\n", a);
	}
	test();
	return 0;
}

❗️结果如下:
初步了解c语言(二)

我们可以看到,在一个文件内,全局变量在哪里都可以使用。


  1. 多个源文件:
    例如:
    第1个文件:
int num = 10;

      第二个文件:

#include<stdio.h>
//声名外部符号。
extern int num;
int main()
{
	printf("%d\n", num);
	return 0;
}

❗️结果如下:
初步了解c语言(二)

📙通过这两个例子,我们可以看出,全局变量的作用域是整个工程
正是因为可以在整个工程使用,所以会变得不安全,要尽可能避免使用。


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

局部变量的生命周期示意:
初步了解c语言(二)
全局变量的生命周期:
  main函数的第一行开始运行直到结束,全局变量都可以使用。

📙所以:全局变量的生命周期就是整个程序的生命周期


常量

c语言中的常量有以下几种:

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量

📘 字面常量:
例如: 整数 1; 小数 1.5; 字符 ’a’ ; 字符串 “abcde”


📘const 修饰的常变量:
例:

#include<stdio.h>
int main()
{
	int num = 10;
	printf("%d\n", num);
	num = 100;
	printf("%d\n", num);
	return 0;
}

❗️结果:
初步了解c语言(二)

现在我们将num变量前面加上const 。
例:

#include<stdio.h>
int main()
{
	const int num = 10;
	printf("%d\n", num);
	num = 100;
	printf("%d\n", num);
	return 0;
}

❗️结果:无法编译运行。
初步了解c语言(二)
❓ 原因是什么呢❓

🌟const 修饰的变量使得变量具有了常属性——不可被改变! 但是,这个本质上还是 变量


📘 #define 定义的标识符常量
例:
初步了解c语言(二)
🌟在预编译阶段,其实就会将 num 直接替换为10,ch替换为‘a’,num1替换为1.0f


📘枚举常量

枚举就是 一个一个列举 。

例如 : 列举性别,列举血型等等。 所以 c 语言引入关键字enum

enum SEX
{
	//一一列举性别的可能
	MAX,
	FEMALE
};

此处细节会在后期详细解释!


字符串

字符,简单的来说,键盘上可以敲出来的任何符号都是字符。而字符串,其实就是一串字符。例如:”Hello World“ 。

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。

注意:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
例:

int main()
{
	char arr[] = "abcdef";
	return 0;
}

  监控一下数组,可以发现有一个\0.
初步了解c语言(二)
  其实这个\0是字符串的结束标志。

  用代码解释这个标志:

#include<stdio.h>
int main()
{
	char arr1[] = { 'a','b','c','d' };
	char arr2[] = "abcd";
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	return 0;
}

❗️结果如下:
初步了解c语言(二)
❓对于这种现象如何产生的呢?

初步了解c语言(二)
  而且,在使用strlen(一个库函数,用来计算字符串长度,从给定的地址计数,直到遇到\0才停止)计算字符串长度时,对于上述arr1 的情况,由于无法确定\0的具体位值,所以结果会是随机值。


转义字符

转义字符 释义
\ ? 在书写连续多个问号时使用,防止他们被解析成三字母词
\ ’ 用于表示字符常量’
\“ 用于表示一个字符串内部的双引号
\ \ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\t 水平制表符
\v 垂直制表符
\ddd d d d表示1~3个八进制的数字。 如: \130 表示字符X
\xdd d d表示2个十六进制数字。 如: \x30 表示字符0

一些简单的解释:计算机可以识别二进制,由于字符的不方便储存,所以对字符进行了编号,例如‘a’ —— 97 等等,这种编码就是ASCII 编码,编号就是ASCLL码值。

例如:printf("%c", '\130');
此时130是八进制,转换为十进制是88,对应ASCLL表,可见结果为 X。


注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 💫代码中有些代码比较难懂,可以加一下注释文字

// 注释
注: 以//开头的注释风格是属于c++的,在c99标准之后,也进行了引入。

/* int a = 0; */
注:这种形式(/* */)是c语言的注释风格。

c语言的注释风格是不可以嵌套的,但是c++的注释风格可以。


💞结尾

之后的内容,本小白会持续更新,刚开始写博客,有不足的地方还请各位大佬多多指正,非常感谢!文章来源地址https://www.toymoban.com/news/detail-430151.html

到了这里,关于初步了解c语言(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 11 - 初步了解Python

    参考资料: 菜鸟教程:Python3基础语法 PEP 8:Style Guide for Python Code Python Docs:Source Code Encoding 菜鸟教程:Python 3 命令行参数 Python Docs:Executable Python Scripts 知乎:#!/usr/bin/env python 有什么用? 在没有额外编程规范的前提下,建议翻阅并遵守PEP 8 - Style Guide for Python Code 默认情况下

    2024年02月19日
    浏览(33)
  • 【数据结构】初步了解排序

      Yan-英杰的主页 悟已往之不谏 知来者之可追    C++程序员,2024届电子信息研究生 目录 1.排序的概念及其运用         1.1排序的概念           2.常见排序算法的实现         2.1插入排序         2.2希尔排序                问题:gap是多少合适?        

    2024年02月11日
    浏览(41)
  • tty驱动初步了解学习

    本人是linux驱动初学者,最近在初步学习uart驱动,在这记录下来自己的理解 linux3.10 soc:君正x1000e 四位大佬写的很好 https://blog.csdn.net/cosmoslhf/article/details/16945009 https://blog.csdn.net/lizuobin2/article/details/51801183 https://blog.csdn.net/Luckiers/article/details/123577836 https://blog.csdn.net/mike8825/arti

    2023年04月08日
    浏览(33)
  • Elasticsearch初步了解学习记录

    目录 前言 一、ElasticSearch是什么? 二、使用步骤(python版) 1.引入包 2.连接数据库 3.创建索引 4.写入数据 5.查询数据 三、相关工具介绍 1.ES浏览器插件 总结 随着数据量的不断增加,传统的查询检索在速度上遇到了瓶颈,这个时候就需要一个更具性能的技术来支持大数据量的

    2024年04月16日
    浏览(37)
  • Fuzz初步了解

    模糊测试 - 维基百科,自由的百科全书 (wikipedia.org) 模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏 模糊测试工具主要分

    2024年02月11日
    浏览(34)
  • 接口测试初步了解以及实战

    接口测试定义 :测试系统 组件间 接口 接口测试应用 :测试 外部系统与系统之间 的交互、系统 内部子系统之间 的交互 接口测试类型 :功能测试、逻辑业务测试、异常测试、性能测试、安全性测试 接口测试类型具体介绍 : 1.1功能测试:      定义:1、接口功能正确实现

    2023年04月23日
    浏览(34)
  • HCIA初步了解

    HCIA的全称为Huawei Certified ICT Associate,意思是华为认证ICT工程师,是华为公司打造的世界唯一覆盖ICT全技术领域的认证体系中的初级认证,表示通过认证的人员具备安装、配置、运行ICT设备,并进行故障排除的能力。 1、网络         网络连接设备——路由器、交换机   

    2024年02月04日
    浏览(33)
  • Flink异步IO初步了解

            之前使用Flink查询Redis数据的过程中,由于对数据一致性的要求并不是很高,当时是用MapFunction +  State 的方案。先缓存一大堆数据到State中,达到一定数量之后,将批量Key提交到Redis中进行查询。         由于Redis性能极高,所以并没有出现什么问题,后来了解到了

    2024年02月03日
    浏览(45)
  • 初步了解SpringCloud微服务架构

    ✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: 微服务探索之旅 ✨特色专栏: MySQL学习 🥭本文内容:初步了解SpringCloud微服务架构 🖥️个人小站 :个人博客,欢迎大家访问 📚个人

    2024年02月08日
    浏览(44)
  • 初步了解ES适合新手逐步学习

    1.1 准备数据 1.2 match和term 做查询,返回的结果会给每一个文档做一个相关性算分,用_score来表示,如果一个查询匹配到多条数据,那么_score最高的会排在最前面,表示匹配度最高。这个算分的过程其实是比较消耗性能的,如果我们不关注这个属性的话,可以通过Filter的方式绕

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包