C语言中的小知识点(1)(涉及unsigned讲解,原码反码补码的讲解,以及指针的讲解)

简介: C语言中的小知识点(1)(涉及unsigned讲解,原码反码补码的讲解,以及指针的讲解)

分布式讲解C语言的知识点

首先在c语言发展的过程中涉及到许许多多的知识点,都是零零碎碎的接下来由我来带领大家来仔细的学学这些小的知识点吧!

一、unsigned是什么?什么情况下用到unsigned?打印unsigned用的是什么功能字母

1.首先unsigned和signed是什么意思?

根据翻译来说signed是有符号的意思就说明是带有符号的意思,而unsigned是无符号的意思,就说明signed可以用来表示负数和正数,unsigned就表示的是无符号整形!

2.什么情况下用到unsigned呢?

经常在许多算法题目中,许多的类型要求会提出他们的数值范围要求,有一些就是0~100这样的,此时我们就可以用无符号的类型就会比较好一些!

3.打印unsigned用的是什么字母呢?

在c语言中打印无符号类型用的字符是%u,如以下代码来进行实际操作,首先我们用%d来进行打印会发现还是打印出来-10,可是这时候我们一想,我们用的不是无符号整型吗?为什么还能打出-10出来呢?是不是出错了?当然不是,首先%d是打印十进制整数的,所以会照常的打出-10,那么我们面对unsigned应该用什么符号进行打印呢?对没错那就是用%u来打印啦!

错误示范

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

af0f7431fb7b4df4b2709090572fe400.png

正确示范

`#include<stdio.h>

nt main()

{

unsigned int b = -10;

printf(“%u\n”, b);

return 0;

}`

1a2aec14de9c4b0099be09375692c414.png

好,这时候就会有同学会问了,明明我写入的是-10怎么给我输出来个这么大个数,接下来,就进入我们原码,反码补码知识点的讲解!

二、原码,反码,补码知识点讲解

1.什么是原码,反码,补码?

1.原码

直接将数值按照正负数的形式翻译成二进制就可以得到原码。

2.反码

将原码的符号位不变,其他位依次按位取反就可以得到反码。

3.补码

反码+1就得到补码。

2.一般整型数据在内存中存储的是啥?

就拿刚才的这个例子来说,对于整型数据来说,数据存放才内存中的就是补码,好,这一句话是不是让你豁然开朗了呢?那么接下来就可以解释啦!

3.解释上述例子

#include<stdio.h>
int main()
{
  unsigned int b = -10;
  //10000000 00000000 00000000 00001010 原码
  //11111111 11111111 11111111 11110101 反码
  //11111111 11111111 11111111 11110110 补码
  printf("%u\n", b);
  return 0;
}

首先b在内存中是由原码开始存储的,所以b的原码是 10000000 00000000 00000000 00001010

这里要说明一个点,为什么开头是以1开头,因为b是负数,开头首个数字为1表示负数,若首个数字为0则表示正数,正数的原码反码补码相同,负数的原码,反码,补码不同,负数的原码到反码就是除了符号位,其他位按位取反,然后负数的反码到补码就是反码加一就行啦!

所以我们得到的结果是·11111111 11111111 11111111 11110110

然后放到我们的计算机转换看一下

ce850e8b929b4b3da69f4d13e5019feb.png

就跟我们的结果一模一样啦

52db8694609e467ca382f2bb5afacad2.png

指针的讲解

1.什么是指针?

  1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
  2. 指针的大小是固定的4/8个字节(取决于你是32位平台/64位平台)。

2.认识字符指针

首先我们在前面讲过,指针其实也是用来存放地址的,那么此时我们如果想存放一个字符,那么对应的我们是不是应该找一个字符指针来进行存储呢?是滴没错!接下来我们就用代码来进行实现吧!并且在这里我们要注意,我们放进去的是首字符的地址,所以我们可以对他进行修改

3f9cf3d1f39649599ead99e75a022661.png

int main()
{
  char ch = 'w';
  char* pc = &ch;
  *pc = 'a';
  printf("%c", *pc);
  return 0;
}

接下来我们再看一个那么假设此时我在此指针中存放一个字符串,那么我是真的把这个字符串给存储进去了嘛?接下来我们进行代码分析!

int main()
{
  const char* pstr = "hello bit.";//这里是把一个字符串放到pstr指针变量里了吗?
  printf("%s\n", pstr);
  return 0;
}

da0181b30aff469b8b7b1fc504199d9b.png

看本次结果好像发现真的是存进去了?那么真的是这样吗?当我们像上次一样对其进行修改的时候,发现编译器居然报错了!原来,我们存放的只是字符串的首元素地址,是并不能修改其的,所以在这里我们也加上了const,这样就会使得代码更加地完善!

8146455038c94122b722c2f1029d3bf8.png

总结

代码不是大风刮来的,也不是坐着等来滴,愿我们相互共勉一起加油!

目录
相关文章
|
22天前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
74 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
22天前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
47 9
|
22天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
41 7
|
22天前
|
C语言
【C语言】原码、反码、补码详解 -《码上有道 ! 》
在计算机科学中,整数的表示方式有多种,包括原码、反码和补码。这些表示方式主要用于解决整数的二进制表示和计算问题。本文将详细介绍这三种表示方法,并通过示例来说明它们的原理和应用,特别是它们在C语言中的应用。
91 5
|
26天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
26天前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
88 3
|
27天前
|
存储 算法 程序员
C 语言指针详解 —— 内存操控的魔法棒
《C 语言指针详解》深入浅出地讲解了指针的概念、使用方法及其在内存操作中的重要作用,被誉为程序员手中的“内存操控魔法棒”。本书适合C语言初学者及希望深化理解指针机制的开发者阅读。
|
26天前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
36 1
|
1月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
1月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。