分布式讲解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; }
正确示范
`#include<stdio.h>
nt main()
{
unsigned int b = -10;
printf(“%u\n”, b);
return 0;
}`
好,这时候就会有同学会问了,明明我写入的是-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
然后放到我们的计算机转换看一下
就跟我们的结果一模一样啦
指针的讲解
1.什么是指针?
- 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
- 指针的大小是固定的4/8个字节(取决于你是32位平台/64位平台)。
2.认识字符指针
首先我们在前面讲过,指针其实也是用来存放地址的,那么此时我们如果想存放一个字符,那么对应的我们是不是应该找一个字符指针来进行存储呢?是滴没错!接下来我们就用代码来进行实现吧!并且在这里我们要注意,我们放进去的是首字符的地址,所以我们可以对他进行修改
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; }
看本次结果好像发现真的是存进去了?那么真的是这样吗?当我们像上次一样对其进行修改的时候,发现编译器居然报错了!原来,我们存放的只是字符串的首元素地址,是并不能修改其的,所以在这里我们也加上了const,这样就会使得代码更加地完善!
总结
代码不是大风刮来的,也不是坐着等来滴,愿我们相互共勉一起加油!