【C语言】指针进阶第二站,指针数组
[TOC] 嘟嘟嘟🚌,指针进阶的第二站指针数组到了! 上车上车! 回顾一下第一站🚍的内容:字符指针 指针数组 数组是一种类型的数的集合 整型数组的元素都是int类型 指针数组的元素都是指针变量 123int* arr1[10];//整型指针的数组char*arr2[10];//一级字符指针的数组char** arr3[5];//二级字符指针的数组 参考这一份示意图 示例1:定义多个字符指针 在上一站的字符指针里面,提到了可以直接用指针来创建一个常量字符串 同理,我们可以将多个指针放在一块,凑成指针数组,一次性创建多个指向常量字符串的指针 123456789101112int main(){ char* arr[] = { "abcdef", "qwer", "zhangsan" }; int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz; i++) ...
【C语言】指针进阶第一站,字符指针&typedef关键字
[TOC] 紧张刺激的寒假学习开始啦! 简单回顾一下指针的概念 内存会划分以字节为单位的空间,每一个字节都有一个编号(地址/指针) 指针变量可以存放这个地址/指针 注:我们日常所说的指针,一般是指针变量 下面让我们坐上指针进阶的🚌,来到第一站!字符指针 1字符指针 1.1代码示例1 12345678int main(){ char ch = 'w'; char* p= &ch; char* pa = "abcdef"; return 0;} 字符变量ch里面存放了字符w 字符指针p里面存放了ch的地址 指针变量pa里面存放了abcdef字符串的地址,我们并没有对这个字符串进行初始化。而是直接把它放进了指针变量pa里面。 和前两行的字符w不同,abcdef是存储在内存中的只读数据区,无法修改,即便通过指针也无法修改。 为了避免理解出错,我们一般会加上const修饰 1const char* pa =...
【教程】Typora+PicGo+阿里云OSS搭建博客图床(超详细)
如果你想搭建一个和本站类似的个人博客,那就需要图床来辅助 [TOC] 为什么要搭建博客图床? 以CSDN为例,我们可以选择使用大部分blog平台通用的markdown语法进行博客创作 虽然CSDN自带的编辑器已经能满足我们95%的写作需求 但是Typora在markdown语法编辑上能给你提供更好的写作体验 所以我选择了以Typora+Picgo+图床的方式来进行博客创作 而在本地的markdown文件.md中,图片是以“外链”这一形式存在的 Office...
【C语言】浮点数在内存中的存储(详解)
[TOC] 引言 本文首发于 ❄️慕雪的寒舍 markdown语法小知识点 写在前面,markdown语法的小知识点 如何实现文字变红且加上了底色?如hello world markdown语法如下即可! 1`hello world` 以及页内跳转 12<span id="jump">这一句话没啥用</span>[回到开头](#jump) 正题 之前学习完了整形、字符类型在内存中的存储,今天让我们来看看float类型! 整数类型👉【int】 字符类型👉【char】 常见的浮点数 123.141591E10 浮点数家族包括float、double、long double 类型。 而浮点数表示的范围是在头文件<float.h>里面定义的。 需要了解的是 如果你打出3.14,编译器默认是double类型的。若想让他为float类型,则要在前面加f; 1E10是科学计数法,代表1.0×10^10 代码引例 先来看看下面这串代码 1234567891011int main(){ int n = 9; ...
【C语言】char类型如何在内存中存储?
@[toc] 引子 上篇博客向大家介绍了int类型在内存中的存储方式【链接】 本篇博客我们继续往后,看看整形家族里的char类型是如何在内存中存储的吧! char类型 字符类型包括以下两种形式 unsigned char 无符号 signed char 有符号 用一个简单的printf来看看它们在打印上的区别 12345678910#include<stdio.h>int main(){ char a=-1; signed char b=-1; unsigned char c=-1; printf("a=%d b=%d c=%d\n",a,b,c); return 0;} 打印结果为 1a=-1 b=-1 c=255 这里我们可以得出两个结论 1.在VS编译器下,char默认为signed char 2.unsigned...
【C语言】unsigned无符号类型运用的两个实例
@[toc] 前排提醒😂 本篇博客是对下一篇博客《char类型在内存中的存放》的拓展 并非对unsigned类型的详解! 示例1 123456789#include <stdio.h>int main(){ int i=-20; unsigned int j=10; printf("%d\n",i+j); return 0; } 当有符号类型和无符号类型相加的时候,编译器是怎么处理的呢? 12310000000 00000000 00000000 00010100 -20的原码11111111 11111111 11111111 11101011 反码11111111 11111111 11111111 11101100 补码 100000000 00000000 00000000 00001010 10的补码 -20的补码和10的补码 相加 12311111111 11111111 11111111 11110110 得到的补码11111111 11111111...
【C语言】整型数据在内存中的存储(详解)
[toc] 数据类型 我们知道,C语言中有很多不同的数据类型 在cppreference.com网站上可以找到C语言中的不同类型【链接】 先来认识一个不那么常见的类型 布尔类型 C99中引入了布尔类型 _Bool 实质:把1和0变成ture和false 1234567891011#include<stdbool.h>int main(){ _Bool flag = true; if(flag) { printf("hehe\n"); } return...
【C语言】整型提升和算术转换
[toc] 整型提升 要想知道什么是整型提升,那就要从表达式求值说起 表达式求值 表 达 式 求 值 的 顺 序 一 部 分 是 由 操 作 符 的 优 先 级 和 结 合 性 决 定 同 样,有 些 表 达 式 的 操 作 数 在 求 值 的 过 程 中 可 能 需 要 转 换 为 其 他 类 型 什么是表达式? 举个最简单的例子 12345678int main(){ int a=3; int b=5; int c = a + b * 7; //c的式子即为表达式 return 0;} 而C的整个式子就是一个表达式求值 在这之中,参与计算的两个变量以及结果变量都是int类型,并不需要进行整型提升 在我们日常编写代码的时候,编译器经常会有隐式类型转换 隐式类型转换 C的整型算术运算总是至少以缺省整型类型的精度来进行的 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转化为普通整型,这种转换称为整型提升 12float f =3.14int num...
【C语言】剔除最大最小值后,计算数组元素的平均值
双11也不能阻挡我学习的心! [TOC] 问题引入 题目内容: 定义一个含10个整型元素的一维数组,从键盘上输入10个元素值,求去掉最大值和最小值之后的元素平均值. 输入格式: 用循环控制依次输入10个元素值,scanf语句中的格式控制串为: “%d” 输出格式: 输出平均值, printf中的格式控制串为 “%lf\n” 输入样例: 12 3 4 5 6 2 4 6 4 3 输出样例: 13.833333 理解1 一般人看到这种题目,下意识会认为是去掉一个最大值一个最小值,再计算数组其他元素的最大值 毕竟很多体育赛事都是这么计算选手的得分的 实际上这道题并不是这么要求的,这点我们后面再提 先来看看如何去掉数组中的一个最大值、一个最小值吧! 去除一个最大/最小值 先理清思路 需要找到数组中的最大值和最小值 在计算平均值的时候需要剔除这两个值 想清楚这两点后,方法就很明确了 之前我写过一篇博客,有关如何查找数组中最大值的 [链接] 这里我们就能用上那个博客里面的方法,不过是以自定义函数的方式实现 123456789101112131415161718int...
【C语言】如何将输入的数字逆序打印
这个问题是我在做学校的作业时候看到的。只隐约有印象讲过,但是忘记了怎么操作。听同学的点通才回想起来,特此写个博客留记 [toc] 逆序打印 目的:输入“789”,打印“987” 注:本博客的数字逆序只涉及 十进制 代码实现有两种方式: 1.利用if语句进行大小判断,直到选出从大到小的数字排序 这个方法十分复杂,稍不留意就会弄错,所以在实际应用中不推荐这样操作 这里就不赘述具体代码了。(才不是懒,压根没试过) 2.使用%10的方法直接打印 代码如下: 123456789101112#include <stdio.h>int main(){ int a = 0; scanf("%d", &a); printf("%d", a % 10); printf("%d", a/10 % 10); printf("%d", a/100 % 10); return...