手写C语言之基本概念及编程技巧总结(02)

简介: 手写C语言之基本概念及编程技巧总结

C语言的数据类型

1. /*
2. char   字符数据类型
3. short    短整型
4. int      整形
5. long   长整型
6. long long  更长的整形
7. float    单精度浮点数
8. double   双精度浮点数
9. */

数据类型在编程中是非常重要的一个基本知识,尤其是在C语言中,每一行代码的编写和调用都必须要符合数据类型原则,比如你需要存储一个变量,叫做常量,那么就会有对应的规则。

类型大小

sizeof计算这些关键字变量的字节


image.png

那么什么是字节呢?

计算机中单位

计算机识别二进制的,0和1,所有的代码最终都会被编译成机器码,被内部的编译器进行解读

八进制:只含0-7;十进制:只含0-9

bit——比特位(最小的单位)

byte——字节(1个字节=8个比特位)

image.png

image.png

image.png


char类型只可以存储一个字节(8bit),故我们在调用的时候也要注意,使用单引号进行存储,不可以使用双引号。以及在存储浮点数类型,需要在数字后面加一个 f 作为标识。

变量的分类

局部变量和全局变量

image.png

上面的局部变量global变量的定义其实没有什么问题的


当局部变量和全局变量同名的时候,局部变量优先使用


变量的作用域和生命周期

作用域


作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用


而限定这个名字的可用性的代码范围就是这个名字的作用域。


1. 局部变量的作用域是变量所在的局部范围。

2. 全局变量的作用域是整个工程。


生命周期


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


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

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


字符串-转义字符-注释

字符串

在Python语言中,我们总是不会太在乎引号到底是双引号还是单引号,因为都可以用,而且使用起来比较的方便。但是在C语言中确实两种不一样的概念,比如:这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。而单引号所包裹的是一个字符。


#include <stdio.h>
int main()
{
  printf("你好,王小王-123!\n");
  printf('我');
  return 0;
}


image.png

既然,我们知道了,单引号只可以存放一个字符,那么我们就放入了一个字,为什么程序不不不报错,但是却没有打印出来任何信息呢?


因为无论是java还是C#还是C语言,使用printf都是格式化字符串,当然要用双引号,单引号包括的是字符,双引号才是包括字符串。


单引号在字符常量时使用,表示单个字符。


当在单引号中出现两个及以上字符时或没有字符时,编译出错。


"A" 表示字符串,该字符串只有1个大写字母A组成,占用2个字节空间,每个字符串末尾自动会加上一个空字符 '\0'


空字符常量使用转义符号 '\0'表示,空白字符串使用双引号表示 ""


char c = 'aA'; // 编译出错,单引号只能是一个字符


如果在这里存放一个汉字,从数量上看虽然是一个,但是一个汉字也是用2个字节存放的,所以也会编译出错


image.png


char c = ''; // 单引号中间没有任何字符时,编译出错


image.png


输出单引号,注意一定要使用转义字符,如果不使用转义字符,就会被系统是被为前面的单引号所使用,这样就会出现语法错误。


那么如果我们不使用单引号,我们需要使用双引号里面存放单引号,最终输出呢?那么此时我们就需要用到数组存放字符串的知识了。


image.png


总结

(1)单引号括起来的单个字符代表整数

(2)双引号括起来的字符代表字符指针

(3)C编译器接受字符和字符串的比较,无任何意义

(4)编译器允许字符串对字符变量赋值,只能得到错误


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

内容。

image.png

相关文章
|
2月前
|
C语言
数据结构基础详解(C语言):图的基本概念_无向图_有向图_子图_生成树_生成森林_完全图
本文介绍了图的基本概念,包括图的定义、无向图与有向图、简单图与多重图等,并解释了顶点度、路径、连通性等相关术语。此外还讨论了子图、生成树、带权图及几种特殊形态的图,如完全图和树等。通过这些概念,读者可以更好地理解图论的基础知识。
105 8
|
3月前
|
存储 编译器 程序员
八:《初学C语言》— 函数的基本概念
【8月更文挑战第3天】本篇文章详细讲解了库函数与自定义函数的区别、函数的嵌套调用及链式访问、函数的声明和定义、static和extern等基础知识
35 1
八:《初学C语言》— 函数的基本概念
|
3月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
81 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
|
3月前
|
存储 编译器 程序员
【C语言篇】C语言常见概念
编译时,注释会被替换成⼀个空格,所以min/* 这⾥是注释*/Value会变成min Value,⽽不是minValue。这是C99标准新增的语法。
41 0
|
5月前
|
IDE Unix 编译器
一:《初学C语言》— C语言常见概念
在本篇文章中,详细讲述了C语言的常见概念。意在能够让读者初步了解C语言,为后续C语言的学习做铺垫
126 5
一:《初学C语言》—  C语言常见概念
|
4月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
106 2
|
5月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
5月前
|
存储 自然语言处理 编译器
C语言常见概念
C语言常见概念
|
5月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
110 7
|
6月前
|
Java C语言 C++
从C语言到C++_28(红黑树RedBlackTree)概念+插入接口实现(上)
从C语言到C++_28(红黑树RedBlackTree)概念+插入接口实现
53 4