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

总结

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

目录
相关文章
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
1768 13
|
C语言
【C语言】原码、反码、补码详解 -《码上有道 ! 》
在计算机科学中,整数的表示方式有多种,包括原码、反码和补码。这些表示方式主要用于解决整数的二进制表示和计算问题。本文将详细介绍这三种表示方法,并通过示例来说明它们的原理和应用,特别是它们在C语言中的应用。
2803 5
|
C语言
C语言学习笔记-知识点总结上
C语言学习笔记-知识点总结上
278 1
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
790 4
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
250 0
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
|
存储 编译器 C语言
|
搜索推荐 程序员 C语言
指针赋值与引用传递:C语言的基础知识与实践技巧
指针赋值与引用传递:C语言的基础知识与实践技巧
|
C语言
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
177 0