![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 54
MyFamily_IT
只为更好的自己而努力。
展开
-
野指针详谈
首先我来说说什么是野指针,野指针通常是因为指针变量中保存的值不是合法的内存地址引起的 。野指针不是NULL指针,是指向不可用内存的指针。NULL指针不容易用错,if语句很好的判断一个值是不是NULL;野指针带来的坏处,最小最小来说,如果那片内存没被使用表面看起来是没问题的。但通常情况下,它会造成内存泄漏,严重的话,会造成程序终止或系统重启。C语言值没有任何手段可以判断一个指针是不是野指针!野指针的...原创 2018-01-30 15:31:44 · 679 阅读 · 0 评论 -
sizeof在程序中的深层剖析
程序如下:#include<stdio.h>#include<string.h>#include<malloc.c>int main(){ int b[5]={1,2}; char a[5]={'a','b'}; char*p=a; printf("%d,%d,%d,%d,%d,%d\n",sizeof(a),sizeof(b),siz...原创 2017-11-29 17:03:04 · 331 阅读 · 0 评论 -
指针,数组指针,指针数组的剖析
指针:的来由是因为通过一个存储单位的地址来存取该存储单元是困难的,所以引入指针这个新的类型数据。指针的特点:其值代表存储单元的地址。其型代表指针所指存储单元占用多少个连续字节内存单元。不同类型的指针变量所分配的内存单元大小相等(32位pc机中占4个字节)。指针分类:常量指针,变量指针和函数指针。数组名 是数组首元素的起始地址,但不是数组的起始地址。指针数组:是一个普通的数组。 type* p...原创 2017-11-23 19:06:44 · 336 阅读 · 0 评论 -
sizeof和strlen的区别
1,strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。 2,sizeof计算声明后所占的内存数(字节大小),不是实际长度。 3,sizeof是一个取字节运算符,而strlen是个函数。 4,sizeof的返回值=字符个数*字符所占的字节数,字符实际长度小于定义的长度,此时字符个数就等于定义的长度。若未给出定义的大小,分类讨...原创 2017-11-21 19:29:14 · 306 阅读 · 0 评论 -
c语言常见循环嵌套程序(初级)
一,素数的求解#include <stdio.h>int main(){int i,m;scanf("%d",&m);for(i=2;i<m;i++){if(m%i==0)break;}if(i==m)printf("它是素数\n");elseprintf("它不是素数\n");return 0;}二,正三角形 “*”的输出(此处举例前十行的表示程序)#include &...原创 2017-11-19 22:43:41 · 4559 阅读 · 0 评论 -
如何从门外汉到大概理解嵌入式(c语言)基础知识
1. 什么是计算机程序?什么是编程语言?为什么需要编程语言?编程语言是用来干嘛的?举例一些编程语言,以及他们各自的特点?答:计算机程序(英语:Computer program),也称为软件(英语:software),简称程序(英语:Program)是指一组指示计算机或其他具有信息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。人和电脑硬件也要有语言来交流那就是计...原创 2017-11-17 18:22:53 · 1722 阅读 · 0 评论 -
笔试常见的简答题(不断更新)
一,关键字static的作用答:声明一个全局变量,局部变量或函数,使得被声明的值,可以再子函数和主函数之间使用,而不会被释放,知道整个程序结束。(延长了生命周期),修饰全局变量或函数时只能在本文件使用。二,局部变量和全局变量是否可以重名?答:可以重名,在函数中引用这个变量时,会用到同名的局部变量,而不会用到全局变量。三,static全局变量和普通全局变量有什么区别?static局部变量和普通局部变...原创 2018-03-26 22:08:21 · 1189 阅读 · 0 评论 -
sprintf函数的用法
参考网址:http://www.360doc.com/content/13/0701/16/10724725_296813859.shtmlsprintf函数的用法在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比prin...原创 2018-04-17 16:01:44 · 329 阅读 · 0 评论 -
linux下的常见指令
ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件echo ...原创 2018-05-22 20:10:54 · 171 阅读 · 0 评论 -
const和static的用法与作用
const的用法与作用(1)在C语言中用const去修饰一个变量,表示这个变量是只读的,不可通过显式的调用a去修改a的值,并且此时a仍然是一个变 量,不能等同于常量;(2)要注意const在声明变量时所处的位置,位置不同,在意义上可能会有很大的不同。如果const在'*'左边,则表示指针指向的变量的值不可变;如果const在'*'右边,则表示指针的值是不可变的;(3)C语言和C++中的const有...原创 2018-07-10 10:10:32 · 605 阅读 · 0 评论 -
操作系统的堆栈与数据结构的堆栈的区别
数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权。 堆性质:叶子节点小于(或大于)父亲节点,则为小(大)顶堆。 数据结构中的堆可以用一个数组来存储(完全二叉树结构。)栈实际上就是满足先进后出的性质的数学或数据结构操作系统中的堆: 这里的堆是属于内存分配方式的一种:动态分配内存。 ...原创 2018-08-10 19:02:08 · 2531 阅读 · 0 评论 -
回调函数的理解
回调函数是利用函数指针实现的一直调用机制。回调函数机制原理:1>调用者不知道具体事件发生的时候需要调动的具体函数。2>被调函数不知道啥时候被调用,只知道被调用后完成的任务。3>当具体事件发生时,调用者通过函数指针调用具体函数。注意;回调机制把调用者和调用函数分开,互不干扰。例如;#include <stdio.h>typedef int(*FUNCTION)(in...原创 2017-11-29 17:15:34 · 324 阅读 · 0 评论 -
malloc.h头文件以及malloc函数
malloc.h,动态存储分配函数头文件,当对内存区进行操作时,调用相关函数.。malloc函数是一种分配长度为num_bytes字节的内存块的函数,可以向系统申请分配指定size个字节的内存空间。说通俗点就是动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。malloc 函数返回的是 void * 类型。void* 表示未确定类型的指针。C,C++规定...翻译 2017-12-01 13:06:45 · 15975 阅读 · 1 评论 -
利用c语言结构体实现通讯录
用结构体实现一个可以用来存储1000个人的信息的通讯录,每个人的信息包括:姓名、性别、年龄、电话、住址程序如下:#include<stdio.h> #include<string.h> #include<stdlib.h> struct People { char name[20]; char sex[5]; ...原创 2017-12-06 23:39:59 · 2934 阅读 · 0 评论 -
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。请按从小到大的顺序输出这32种01串。(五种方式)
看到第一个方法时,我觉得可以转载这篇文章做个留念。(活到老,学到老,套路到老)对于其他方法,还是很强势的,大家可以借鉴,共勉。一:暴力(这个可以有)#include <iostream>using namespace std;int main(){ cout<<"00000"<<endl; cout<<"00001"<&转载 2018-03-14 17:30:08 · 3156 阅读 · 2 评论 -
操作系统(一)文件操作
大家想必听过这样一句话----Linux下皆文件(Linux是一个安全的操作系统,它是以文件为基础设计的,印证上句话)。Linux操作系统中,它对一切资源的管理归根结底都是对文件的操作。不带缓存的I/O是对文件描述符操作,带缓存的I/O是针对流的。一,Linux目录结构mkdir mm 是创建一个tiger的目录,然后用命令“ls -al tiger”来看一下tiger目录的详细信息。Linux采...原创 2018-01-30 11:33:50 · 417 阅读 · 0 评论 -
游戏停车场管理系统 (c语言)
在数据结构这部分学习结束后,写一个小项目,我想是对这部分知识一个很好的运用过程。我在这 介绍我写的一个项目,游戏停车场(这个版本只是初级版,可以在这之上继续添加很多其他功能,大家可以自己尝试)。功能要求如下:程序如下:/*************************************************************************** 项目要求 游戏VIP停车...原创 2018-01-25 21:07:19 · 1941 阅读 · 0 评论 -
重置动态空间大小的分析
为了更好的理解指向指针的指针,我给大家举下面这个例子,一方面来说明为啥需要指向指针的指针,另一方面,说明如何重置动态内存空间大小。指针其实在本质上来说也是变量,它也存在传值调用和传址调用。在嵌入式开发中,我们对内存的占用其实是也别重视的,如何合理的分配空间显得尤为重要。下面看这个例子,你会有比较好的认识。#include <stdio.h>#include <malloc.h&...原创 2018-01-04 22:09:35 · 426 阅读 · 0 评论 -
面试中易错的指针问题
在嵌入式面试中,指针的问题是必不可少的,下面这个例子可以很好地让你对指针有更深刻的理解。#include <stdio.h>int main(){ int a[5][5]; int(*p)[4]; p = a; printf("%d\n", &p[4][2] - &a[4][2]);}打印结果为:-4.大家有...原创 2018-01-04 21:55:47 · 343 阅读 · 0 评论 -
时间复杂度和空间复杂度
算法的性能分析是算法设计中非常重要的方面,要想编写出能高效运行的程序,我们就需要考虑到算法的效率。 算法的效率主要由以下两个复杂度来评估: 时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。算法的时间复杂度一般是问题规模的函数,通常用T=T(n)表示,其中,n表示问题的规模,即算法所处理的数据量。T表示算法所用时间。算法的执行时间=该算法所有语句执行次数(包括重复执行次数)* ...原创 2017-12-30 21:19:58 · 1126 阅读 · 0 评论 -
有关指针的数据类型的小结
下面表格是有关指针的数据类型的小结,我把其他类型的定义也接在了一起,这样更方便全面了解数据类型 。原创 2017-12-20 10:13:38 · 435 阅读 · 0 评论 -
指向函数的指针的分析
函数指针变量常用的用途之一是把指针作为参数传递到其他函数。熟练使用函数指针变量对于你对C语言的了解有很高的帮助。不过这属于C语言的应用中比较深入的部分,所以要多加分析和编程。下面我举一个比较简单 的例子,设一个函数process,在调用他的时候,每次实现不一样的功能,输入a,b第一次调用process时找出a和b中大者,第二次找出小者,第三次求和。程序如下:#include<stdio.h&...原创 2017-12-15 20:56:58 · 420 阅读 · 0 评论 -
利用链表实现通讯录
用链表实现一个可以用来存储信息的通讯录,每个人的信息包括:姓名、性别、年龄、电话、住址程序如下:#include<stdio.h>#include<string.h>#include<stdlib.h>#define LEN sizeof(struct student) struct student{ int i; char...原创 2017-12-15 20:48:03 · 8581 阅读 · 4 评论 -
递归法实现汉诺塔
汉诺塔问题,作为一个古典的数学问题,是一个只能用递归调用解决的问题,问题是这样的:古代有一个梵塔,塔内有三个座A,B,C,开始时A座上有64个盘子,盘子大小不等,打的在下,小的在上,有个 老和尚想把64个盘子从A座移到C座,但每次只能移到一个盘子,且移动过程中在3个座上都保持大盘在下,小盘在上。在移到过程中可以利用B座,要求编程打印除移动的步骤。为使得问题简单化,我们先分析将A座上3个 盘子移动到...原创 2017-12-09 23:37:08 · 542 阅读 · 0 评论 -
C/C++中const的详解
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数: 类名:...转载 2018-08-16 11:27:27 · 503 阅读 · 0 评论