![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言中的难点
ALfirewell
本人的目标是当一名嵌入式研发工程师,会把自己学习的历程以及自己的发现和心得记录下来,但愿最后能如愿以偿。
展开
-
红黑树-2 添加
前一篇博客介绍了红黑树的性质和旋转,这一片将具体介绍下红黑树的添加。在介绍红黑树的添加之前大家首先要理解这几点:1.红黑树在插入之前就已经是红黑树了2.当前要插入的节点必须是红色(不会影响黑高)3.父节点是红色的时候需要进行调整(父节点是红色它的孩子节点必须是黑色),祖父节点肯定是黑色的,叔父节点可能是红色可能是黑色。对于父节点和叔父节点都是红色的情况不需要进行左旋和右旋,可以直接通过改变颜色去保证红黑树。对于父节点是红色,叔父节点是黑色的情况必须通过旋转去保证红黑树。这种情况下还要区分当前插入原创 2020-09-20 23:34:11 · 130 阅读 · 0 评论 -
红黑树-1 介绍与旋转
红黑树是基于二叉树的一种非常重要的数据结构,它在二叉树的基础上加上了一下五点的限制,这也是红黑树的性质:1.每个节点是红色或者黑色2.根节点是黑色3.每个叶子节点是黑色4.如果一个节点是红色,那么它的两个孩子都是黑色5.对每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点这里重点要理解第四和五点根据这五点性质我们可以推断出第二张图是符合红黑树性质的。接下来介绍下红黑树的旋转:红黑树存在左旋和右旋两种,在插入节点和删除节点的时候需要进行旋转来调整红黑树使其始终满足上面介绍的五条原创 2020-09-20 23:07:33 · 232 阅读 · 0 评论 -
指针数组 数组指针详解
关于指针数组和数组指针,是很多刚开始学C语言的人都很头疼的问题,我也不例外,最近我专门把这块做了一个总结,来和大家一起分享,有什么问题或者疑惑也可以在下方评论或者私信我。我主要是通过代码来使大家加深这块的印象,在这之前,先来了解一下这两个的概念。数组指针:本质上还是一个指针,它是一个指向数组的指针。 指针数组:本质上是一个数组,数组中的每个元素都是指针类型。#include<s...原创 2018-08-11 21:29:16 · 444 阅读 · 0 评论 -
陷阱之有符号无符号字符型数组
请看下面这段代码:#include <stdio.h>#include <string.h>int main(){ char a[1000]; int i; for(i=0;i<1000;i++) { a[i]=-10-i; } printf("%d\n",strlen(a)); print...原创 2018-08-10 09:54:27 · 2359 阅读 · 2 评论 -
C/C++引用必须为左值的问题详解
我们常常会遇到这样的问题: const int&amp; a = 101;//对 int&amp; b = 101;//错例子: int a; int &amp;b = a; a = 10; printf(“b = %d\n”,b); 此时b = 10,b是a的引用,就是说b和a的地址相同,对a做改变b也跟着变化。 那么这是为什么呢? 下面我们...原创 2018-08-10 09:27:47 · 2635 阅读 · 0 评论 -
class 和 struct 的区别
首先在C语言中没有class,class是面向对象的,是C++中特有的用来定义类的关键字。 而struct在C和C++中都可以用,是用来定义结构体的关键字。 那么struct在C和C++中有什么区别呢? 1.C语言中:struct是用户自定义数据类型(UDT);C++中struct是抽象数据类型(ADT),支持成员函数的定义,(C++中的struct能继承,能实现多态)。 2.C中stru...原创 2018-03-17 19:55:24 · 343 阅读 · 0 评论 -
学习C语言的第六天
在学习C语言的第五天里,我已经接触到了C语言的重点也是难点——指针,今天是我学习C语言的第六天,在今天的学习中我将会加深对指针的理解以及应用。 下面是我自己写的几个例题: 例1:int main(int argc, char **argv) { int a[3]={ 0 }; printf(“%0x %0x %0x”,a,a+1,&a+1)原创 2017-12-07 17:42:15 · 251 阅读 · 0 评论 -
scanf和gets的用法和区别
scanf和gets的用法: 在C语言中,我们主要用scanf和gets这两个函数(在stdio.h文件中)进行输入。 首先来介绍下scanf函数: scanf在C语言中能对各种类型进行输入,同时也能对字符串输入。 格式如下: 输入整型:scanf(“%d”,&a) 在这里假设a是整型的。注意:对a要取地址 输入浮点型:scanf(“%f”,&a) 在这里假设a是浮点型的,也要对a取地址原创 2017-11-28 10:34:04 · 9776 阅读 · 0 评论 -
sizeof和strlen的区别
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以”\0”结尾的。 sizeof还可以用函数做参数,比如: short f(); printf(“%d转载 2017-11-23 17:49:08 · 407 阅读 · 0 评论 -
define和inline的区别
区别: 1.内联在函数编译时展开,而宏在预编译时展开。 2.编译时,内联函数可以直接被镶嵌到目标代码中,而宏定义只是一个简单的文本替换。 3.内联函数可以完成类型检查、语句是否正确等编译功能,宏定义则不可以。(宏定义不是函数,inline是函数)。 4.宏在定义时要小心处理宏参数,(一般情况是把参数用括弧括起来)。 举例:define1、宏定义只是简单的文本替换,所以注意将变量加上括号,例原创 2017-11-23 22:23:06 · 409 阅读 · 0 评论 -
字节对齐
一、什么是字节对齐,为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开原创 2017-11-23 19:00:16 · 345 阅读 · 1 评论 -
printf和puts的用法及区别
首先来介绍下printf和gets的用法 printf用法: printf的用法和scanf一样,只是scanf是用于输入而printf用于输出。 在上篇已经介绍过scanf的用法,这里就不做介绍了。 再看puts: puts是gets的对立,gets用于输入字符串而puts用于输出字符串,如果掌握了gets,那puts也就基本掌握了。 puts()在输出字符串时会将’\0’自动转换成’原创 2017-11-30 14:47:39 · 1961 阅读 · 0 评论 -
C语言学习的第七天(续)
在上一节讲了数组指针和指针数组以及它们的用法和区别。 在这一节中将要了解指向指针的指针,即二级指针。 下面请看例题:例1: #include原创 2017-12-08 15:46:28 · 294 阅读 · 0 评论 -
C语言的第七天学习
在学习C语言的第六天,使我对函数和指针有了一定的了解,并能运用他们来编写一些简单的程序。 在今天,也是我学习C语言的第七天,将接触到指针数组和数组指针以及指向指针的指针。(指针的难点) 下面请看我写的这些例题: 例1: int main(int argc, char **argv) { int a[3][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8}};原创 2017-12-08 14:51:53 · 281 阅读 · 0 评论