我的C语言学习之路
Iron2222
一个相当工程师的研究僧!
展开
-
Python究竟属不属于嵌入式语言?
几十年来,大家普遍的认为C与C++才是标准的嵌入式语言,那么现在大火的Python算是一种嵌入式语言吗?在给出我的答案之前我们要先明确几个问题?编程语言(英语,是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令,一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动。最早的编程语言是在电脑发明之前产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。小电脑。...原创 2022-07-16 09:48:44 · 778 阅读 · 3 评论 -
浅聊我和一些编程语言的缘分
首先小胡同学自己并不是科班出身,不是计算机或者互联网相关专业的的学生,我本科期间是车辆工程专业,偏机械一点。本科期间对编程语言的唯一认识就是C,其实也不算是,准确的是DEV C++,但大家都懂得,本科的通识课是可以忽略不计的。再之后就到了研究生学校这边,考研的时候就想着能跳出老专业的限制,去见识一些新的东西,因为四年的大学生活,让我明白如果毕业之后,还是找一份画三维图的工作的话,我可能会疯掉~阴差阳错就来了我现在导师这边,说是做的嵌入式,但实际上更多是电子相关的东西,或者说单片机。还记得去年暑假,导师给我安原创 2022-07-05 20:33:26 · 441 阅读 · 0 评论 -
重温51汇编指令(附实验)
重温51汇编指令(附实验)写在前面:在电子控制的课上,老师带我们重温了一些51的汇编指令,有了一些新的思考,感觉非常的有趣,所以这里进行总结和尝试。正文:实验平台:keil5实验目标MCU:intel的80C51BH51寄存器的简单介绍:通过debug窗口可以进行观察符号以及寄存器意义:1、r0~r7寄存器组的八个工作寄存器2、a是累加器,用于运算以及存放数据3、b是专用寄存器,用于MUL(乘法)、DIV(除法)存放第二操作数、乘积的高位字节、除法余数等。4、psw属于原创 2022-04-17 16:58:40 · 2337 阅读 · 0 评论 -
C面试必问关键字volatile,static,const,extern
volatile,static,const,extern写在前面:学习就是不停的重复,重复,再重复。我从研一就准备面试,我就不信找不到工作,卷起来吧!volatile最重要的作用,就是防止编译器优化。i=1;i=2;从程序的结果上看,i=1这句是可以省掉的(编译器优化的时候,也确实这么做了)。但是,如果i=1这句有特殊的含义呢,是必须的操作句怎么办,比如说,我故意加这句进行延迟,你编译器给我优化了,这可不行。所以,可以在语句起那面加一个volatilevolatile i=1;原创 2021-11-14 11:18:26 · 907 阅读 · 0 评论 -
写个脚本,一键打开软件文档(Windows)
写个脚本一键打开,软件,文档(Windows)不用不知道,一用都说好!!每天早起,来到实验室,电脑开机,在一个一个把要用的文档和软件打开,属实麻烦!!!而且就我那个配置的台式机,真担心那一天就不能工作了。今天看==《程序员的自我修养》时==,偶然间看到用脚本的方式来做一些重复性工作。对啊,我怎么没想到,我可是也学过脚本的啊!说搞就搞!代码如下:start /d "D:\Program files\360\Tencent\QQ\Bin\"QQScLauncher.exestart \d "原创 2021-10-27 17:59:01 · 1347 阅读 · 0 评论 -
头文件中#ifndef __CC_H #define __CC_H #endif如何理解?
头文件里为什么要像下面表达呢?#ifndef __CC_H#define __CC_H#endif这就牵涉到头文件的引用的问题了。#ifndef __CC_H意思是"if not define __CC_H"#define __CC_H 就引入__CC_H#endif 否则不需要引入主要作用是:防止该头文件被重复引用。这里的重复引用指的不是说不同的两个文件引用了同一个头文件,而是同一个文件多次引用了一个头文件。什么会这样?因为头函数之间的嵌套,原创 2021-10-22 15:37:36 · 338 阅读 · 0 评论 -
知道‘,’操作符吗?
void main(void){ int a, b, c, d; a = 3; b = 5; c = a, b; // 逗号表达式的优先级最低 d = (a, b); // 逗号表达式的值是最右边的值 printf("c=%d", c); printf("d=%d", d);}备注:逗号操作符在实际工作中会用到,用于简写代码 考查逗号表达式,逗号表达式的优先级是很低的,比赋值(=).原创 2021-10-21 21:36:38 · 124 阅读 · 0 评论 -
堆和栈的区别?
1.申请方式,栈的空间由操作系统自动分配,释放,堆上的空间手动分配,释放。 2.申请大小,堆的可用空间比较大,栈的可用空间比较小,一般是2M。 3.申请效率,栈申请速度比较慢,堆的申请速度比较快。 (1)管理方式不同: 栈直接由编译器管理(产生和消除),堆由程序员管理,程序员管理其的产生和消除 (2)空间大小不同: 栈占用的空间较小,而堆占用的空间较大 (3)能否产生碎片不同: 栈不会产生碎片,但是堆会产生,会有内存泄露的问题 (4)生长方向不同: 栈是向下压栈,堆是向上存放数据原创 2021-10-21 21:30:39 · 205 阅读 · 0 评论 -
函数指针的三个常见错误,给我记住喽~!
int *f1(void) { int x =10; return (&x); // 函数内的变量退出后会释放} int *f2(void) { int *ptr; *ptr = 10; // 指针指向常量 return ptr; // 函数内的常量指针也不要返回}int *f3(void) { int *ptr; ptr = (int *)malloc(sizeof(int)); // 分配的内存记得取消.原创 2021-10-11 13:43:55 · 375 阅读 · 0 评论 -
指针小训练(1)
#include<stdio.h>void main(void){ int a[5] = {1, 2, 3, 4, 5}; printf("%d\n",&a);//6618672 printf("%d\n",*a);//1 printf("%d\n",(int *)a);//6618672 printf("%d\n",*(int *)a);//1 printf("%d\n",&a+1);//6618692 pr.原创 2021-10-11 13:15:11 · 63 阅读 · 0 评论 -
面试被问volatile,如何回答?记住下面五点!
1、表明变量能被后台程序修改 2、防止编译器优化掉操作变量的语句 3、防止编译器优化变量的存取对象(memory or register) 4、访问被volatile修饰的变量时,强制访问内存中的值,而不是缓存中的。 5、volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错嵌入式中应用:在程序中对GPIO相关寄存器的定义 #define PINSEL0 (*((volatile unsigned原创 2021-10-10 21:22:35 · 201 阅读 · 0 评论 -
编译器如何安排各个变量在内存中的布局(eg. stack,heap,data section,bss section)
程序编译后,生成一个map,动态分配内存放到堆中,函数内变量放在栈中,全局未初始化变量放在bss中,代码code、全局常量放在text中 bss段: bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。 bss是英文Block Started by Symbol的简称。 bss段属于静态内存分配。 data段: 数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。 数据段属于静态内存分配。 text段: 代原创 2021-10-10 20:58:34 · 342 阅读 · 0 评论 -
指针传参 引用传参 值传参
解析: 该题考察函数传参问题。 1,指针传参 -> 将变量的地址直接传入函数,函数中可以对其值进行修改。 2,引用传参 -> 将变量的引用传入函数,效果和指针相同。 3,值传参 -> 在传参过程中,首先将c的值复制给函数c变量,然后在函数中修改的即是函数的c变量,然后函数返回时,系统自动释放变量c。而对main函数的c没有影响。 a为指针传递,b为引用传递,c为值传递。 *a = 20; b = 30; a和b的值确实发生了修改。而c只是将值复制到形参,在函数内的操作并不会..原创 2021-10-10 20:40:10 · 1024 阅读 · 0 评论 -
if break、if continue和if return
if break 用来终止循环 if continue 结束本次循环,进行下一次循环 if return 用来结束函数执行,不再执行后面的内容 #include <stdio.h>void join(int x) //递归运算{ x++; if (x >= 7) return; join(x); printf("%d\n", x); //注意别漏掉这个打印信息!}int main(){ in.原创 2021-10-10 20:37:25 · 1158 阅读 · 0 评论 -
处女座—C语言处理字符串数据包:获取字符串字串,字符串十六进制输入转十进制输出
大学过渡到研究生阶段发的第一个文章,平时总是在网站上借鉴其他大佬的,是时候输出一下了。这段代码,是一个小项目的一环,单片机获取电池反馈的数据包,要对这个数据包进行处理,按照协议进行解析,并返回电池状态参数。不多说,直接上代码,备注超详细!!!#include<stdio.h>#include <string.h>#include <stdlib.h>#include<math.h>/* 构造一个函数,获原创 2021-09-04 13:35:14 · 247 阅读 · 0 评论