
c语言学习
文章平均质量分 81
卖酒的小码农
这个作者很懒,什么都没留下…
展开
-
C++调python(执行py文件)
C++调python(执行py文件)1、首先要配好vs开发工程2、C++调用Python结果3、报错:ValueError: source code string cannot contain null bytes4、C++调用python文件中import时报错5、C++多线程调用Python多进程multiprocessing时发现不支持6、C++调用python文件中的线程以及字符串在C++和python中间的传递原创 2021-12-28 19:03:03 · 5860 阅读 · 1 评论 -
Python调用C库及进程形式启动C的线程
1、ctypes调用Cdll库2、python中以_thread方式调用Cdll启动其中线程3、python以multiprocessing进程方式运行CDLL中的线程4、python主进程通过multiprocessing.Queue()队列向子进程传递值从而改变Cdll的执行逻辑5、以类多个文件的管理形式实现进程multiprocessing方式的 6、如Cdll崩溃需由multiprocessing再次调起7、在Cdll和python中传入传出字符串使用ctypes8、在Cdll和pyt原创 2021-12-26 12:55:01 · 1926 阅读 · 1 评论 -
Lua调用C的动态库
项目背景因为lua是单线程的,每个lua执行就相当于是一个线程,因此是没有办法完成调用两个C线程的,不能满足当前项目需求,因此不使用lua脚本的方式进行CDLL的线程调用管理了,而使用python了。原创 2021-12-25 20:04:45 · 3871 阅读 · 0 评论 -
c语言链式队列
没有想到的一点是 出队步骤 1;判断队列是否为空 2;将front后面的那个节点出列 (先保存 3;判断出队的那个节点是不是rear节点***没有想到这点??? 4;释放该节点内存 #include <stdio.h>#include <stdlib.h>//表示一个节点的类型 type...原创 2018-05-06 16:34:32 · 504 阅读 · 0 评论 -
C语言之顺序表的循环队列
/** 队列是尾进头出的一种数据结构 这里的front和rear指向的都是待插入的位置,**/#include <stdio.h>#include <stdlib.h>#define QueueSize_UartLen 4 //表示循环队列存储数组的长度//重命名循环队列的数据类型//是结构体类型 typedef struct{ ...原创 2018-05-06 15:45:47 · 675 阅读 · 0 评论 -
c语言之二重指针与二维数组
常量不能再取地址了, 二重指针赋值的时候不仅要看层次上二重指针的两个用法原创 2018-05-06 12:16:25 · 1314 阅读 · 0 评论 -
sd初始化函数存放的二级指针(函数的二级指针)
在sd卡初始化是 根据数据手册可知 初始化函数的首地址存放在0XD0037F98这个地址空间中 因此是二级指针原创 2018-05-05 11:53:31 · 261 阅读 · 0 评论 -
再次理解*指针(解释函数指针的调用)
为什么会再次回到*呢 因为在函数调用中我们发现下面现象 我们发现 *p和p的值都是函数体的首地址 p我们很自然的可以理解 ,之前fun赋值给了p,那么p空间里面存放的就是fun的值也就是函数体的首地址。 *p呢?*p为什么也是函数体的值呢 ?我们先回归一下简单的 p和*p的使用 我们理解*p就是表示跳转到p空间中的地址的空间处取值 那么我们再来理解上面函数调...原创 2018-05-05 11:50:15 · 1478 阅读 · 5 评论 -
c语言杂乱笔记1
数据类型以及栈堆 宏定义的位运算 关键在于利用取反左右移得到那个特定数 指针 左右值 野指针 函数形参 函数指针的调用 typedef的用法 与const结合时 typedef与const (1)typedef int *PINT; const PINT p2; 相当于是int *const p2; (2)typedef int *PINT; PINT...原创 2018-05-04 21:04:53 · 364 阅读 · 0 评论 -
c高级专题——位操作
对于位操作大家的熟悉大概就是 位与、位或、位异或的特点总结: 位与:(任何数,其实就是1或者0)与1位与无变化,与0位与变成0 位或:(任何数,其实就是1或者0)与1位或变成1,与0位或无变化 位异或:(任何数,其实就是1或者0)与1位异或会取反,与0位异或无变化还有移位 左移位<< 与右移位>> C语言的移位要取决于数据类型。 对于无符号数,左移时右侧补...原创 2018-05-04 20:28:15 · 739 阅读 · 0 评论 -
c语言高级专题——内存
朱有鹏老师笔记结合自己理解方便后期查阅编写的博客 1.1.程序运行为什么需要内存 1.1.1、计算机程序运行的目的 我们总是在编写代码,程序 那么我们编写程序又是为了什么呢? 程序运行的目的不外乎2个 :结果和过程 就是对数据加工的过程,和对数据加工后得到的结果例如以函数为例int add(int a, int b) { return a + b;...原创 2018-04-25 23:32:23 · 1180 阅读 · 0 评论 -
字符数组与字符串本质差异(从内存角度分析)
#include <stdio.h>#include <string.h> //未加头文件warning: //incompatible implicit declaration of built-in function ‘strlen’ [enabled by default]char c[5];//未显示初始化 存放在bss段,初始化0;int mai...原创 2018-04-07 11:04:52 · 1331 阅读 · 0 评论 -
C语言面试题每天10道题 ——第一天
第一题 各个数据类型与零值比较 特别是float时 第二题 数组做函数形参传递是 其本质是指针 而非数组名 其大小sizeof为4 第三题各种指针 数组 函数时的定义问题 及分析步骤 第4题 const修饰不能改变以及对他进行改变 以及对字符串常量进行修改是的段错误#include &amp;lt;stdio.h&amp;gt;void fun(int *p);void f...原创 2018-05-14 12:47:19 · 3439 阅读 · 3 评论 -
C语言面试题每天10道题 ___3
1:指针加法 加1 是加单元1 单元的大小就是看指针指向数据类型的大小 2;数组名 首元素的地址 则为指向首元素的指针 则单元大小为 首元素大小 &数组名 数组名的地址 则表示整个数组的首地址 则单元大小为整个数组大小 3;宏定义与自加自减不能混为一谈 4;数据类型范围问题造成的死循环unsigned char 无符号字符类型范围 0~255 ch...原创 2018-05-20 17:57:17 · 712 阅读 · 1 评论 -
c语言之静态链表
/** 静态循环链表 动态是malloc申请节点来存放数据再链接 静态是用一个元素为节点类型的数组来当存储节点的内存 当要使用的时候就在里面找可以使用的元素地址进行链接存储数据 **/ #include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#define linksizemax 4typedef struct ...原创 2018-05-07 21:19:02 · 1012 阅读 · 0 评论 -
二级指针
原创 2018-12-01 17:32:59 · 308 阅读 · 0 评论 -
c中字符串和二级指针内存图
原创 2018-12-02 20:14:29 · 506 阅读 · 0 评论 -
C指针强化
铁律1;指针也是变量,因此我们在画内存图的时候跟其他变量一样,只是我们存放的是一个地址,铁律2;理解指针必须要以内存4区和函数模型相结合,要确定指向的内存是否在其他地方还可以用铁律3;指针一般与函数参数一起应用———————参数可以分为输入型和输出型两种,看是否需要改变,可以加const表示。修改一级指针需要传入其一级指针的地址则用二级指针接收才能改变。一级指针典型用法(指针做函数参数)...原创 2018-12-02 17:11:31 · 702 阅读 · 0 评论 -
怎么练习c来找工作
培养两种能力1;接口的封装和设计(功能抽象和封装)接口api的使用能力接口api的查找能力(快速上手)接口api的实现能力2;建立正确程序运行内存布局图(印象图)内存四区模型图函数调用模型图如何建立正确的程序运行内存布局图内存四区模型&函数调用模型函数内元素深入理解数据类型和变量“内存”属性一级指针内存布局图(int ,char)二级指针内存布局...原创 2018-12-02 16:47:29 · 905 阅读 · 2 评论 -
理解c语言数组类型
抛砖:数组类型,压死初学者的三座大山1、数组类型;数组名2、数组指针;与数组名同等级还是上一级需要&才能赋值3、数组类型和数组指针的关系;先以一维数组为例;int a[10]; int *a1; int (*a2)[10];a;a数组的首地址,即为指针其指向的类型就是int,则a可等效于a1.其区别在于a是常量不能修改a = a+1;这一修改,而a1是变量,两者都可以进行加减法。...原创 2018-12-02 12:52:38 · 5978 阅读 · 0 评论 -
理解c语言的数据类型
众所周知的,c语言是强类型语言,任何变量都必须要有自己的数据类型。那么 我们该如何理解这句话,为什么说是必须的呢。1;关键的一句话就是;数据类型决定在内存读取时的长度和解析的方法。以32位计算机为例;char b的解析;2;关于数据类型的封装;就是上下两层不用管其的数据类型。采用void和void *类型,他们就是表示暂时未定数据类型,由调用者再次强制转换。其中memcpy这些库函数...原创 2018-12-02 12:03:35 · 744 阅读 · 0 评论 -
嵌入式学习—环境变量printenv实现时很好的思路
(1)找到printenv命令所对应的函数。通过printenv的help可以看出,这个命令有2种使用方法。第一种直接使用不加参数则打印所有的环境变量;第二种是printenv name则只打印出name这个环境变量的值。 (2)分析do_printenv函数。 (3)do_printenv函数首先区分argc=1还是不等于1的情况,若argc=1那么就循环打印所有的环境变量出来;如果argc...原创 2018-07-16 10:42:26 · 732 阅读 · 0 评论 -
C语言面试题--------大小端模式问题
第1题 解决大小端问题 使用union和指针两个方法来判断 了解概率 分别什么是大小端模式 大小端模式:就是表示一个数值放在内存中的格式,高位对高地址还是高位对低地址 , 注意一点的是 无论怎么存放 读取的时候还是从低地址开始读取 只是解析的时候不同 。用图形解释概念就是 大端模式 高位对应低地址 小端模式 高位对应高地址 低位对应低地址 高对高则为小端(端口存的是...原创 2018-05-15 22:52:30 · 1953 阅读 · 1 评论 -
C语言面试题每天10道题 ——第二天
1:对地址直接操作时要进行强制转换,否则会报类型不匹配 2;防止头文件重复定义 自定义头文件与系统定义头文件搜索的开始不同 堆栈 堆是堆 栈是栈 3;宏 定义宏一定要多打括号 定义宏来满足两个功能 交换两个数 不能使用第三变量 比较大小 使用三目 宏来测试数组的元素个数 4;带参宏 带参函数 内联函数inline 5;valitele 不...原创 2018-05-14 20:18:36 · 9069 阅读 · 1 评论 -
初论c程序的分层架构案例
懒得码字,直接借用朱有鹏老师课件内容 主题:结构体内嵌函数指针实现分层 (1)程序为什么要分层?因为复杂程序东西太多一个人搞不定,需要更多人协同工作,于是乎就要分工。 要分工先分层,分层之后各个层次由不同的人完成,然后再彼此调用组合共同工作。 (2)本程序要完成一个计算器,我们设计了2个层次: 上层是framework.c,实现应用程序框架;下层是cal.c,实现计算器。 实际工作时c...原创 2018-04-06 15:24:16 · 1275 阅读 · 0 评论 -
c语言之制作静态连接库并使用
课堂笔记来自于朱有鹏嵌入式linux核心课程中自己制作静态链接库并使用 (1)第一步:自己制作静态链接库 首先使用gcc -c只编译不连接,生成.o文件;然后使用ar工具进行打包成.a归档文件 库名不能随便乱起,一般是lib+库名称,后缀名是.a表示是一个归档文件 注意:制作出来了静态库之后,发布时需要发布.a文件和.h文件。(2)第二步:使用静态链接库 ...原创 2018-04-10 15:45:04 · 1407 阅读 · 0 评论 -
c语言字符串常见处理函数
常见字符串函数 静态库详解原创 2018-04-10 12:23:15 · 437 阅读 · 0 评论 -
define与const(未完待续)
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。 const常量会在内存中分配(可以是堆中也可以是栈中)原创 2016-10-16 23:00:33 · 460 阅读 · 0 评论 -
关于%取余的一些知识
关于%取余的一些知识1,%取模主要是用于计算机术语中。取余则更多是数学概念;2;模运算在数论和程序设计中都有着广泛的应用,从奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。3;方法 1.求 整数商: c = a/b;2.计算模或者余数: r = a - c*b.4;拓展小知识;1.同余式:正整数原创 2016-03-31 14:31:34 · 4882 阅读 · 0 评论 -
swap传入指针也会交换失败
今天上课就真的长知识了,一直以为自己学得还可以,知识面还算有点广,然而这次就打脸了啊;闲话不多说,直接进入主题;以前看视频学习的时候就记得过这样一句话, 想要利用函数来交换两个数的值,只能传递指针。 然而我误以为只要传递指针就能交换两个数的值。然而错了。事实证明吧;先看一下传递数值的情况吧;#include<stdio.h>void swap(int x, int...原创 2016-04-26 18:43:49 · 1897 阅读 · 2 评论 -
指针中的运算符的结合性
先回忆一下运算符的优先级吧 注意;在一个运算量两侧的运算符,优先级是相同时则按照运算符的结合性所规定的结合方向处理。 例如 *和/和%处于同一优先级,结合方向是自左向右, 那么7*8/2%3的运算顺序就是7*8然后/2然后%3赋值运算符+=和-=也处于同一优先级,结合方向是自右向左,那么 7+=3-=2;运算顺序就是先算3-=2,结果为1,然后再算7+=1,结果为8;再说一下结合性吧;不知原创 2016-04-26 19:53:03 · 4677 阅读 · 0 评论 -
指针基础概念
第一节;简述指针的一些概念 都是在C的语言基础上的;本人开始细学指针,所以有错误或不严谨的地方请大家多多指出。 刚开始可能会有的晕,但详细介绍的; 一;关于地址的一些概念1。内存单元;在计算机中,所有的数据都是存放在内存中的,一般把内存中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不一样,如int占用4个字节,char占用1个字节。2。内存单元的编号;为了正确地访问这些内存单元原创 2016-05-05 17:12:29 · 913 阅读 · 2 评论 -
数组名及数组名的地址(还有一个小问题没解决)
我们先拿一维数组分析。看int a[10]={0}; 以这个为事列分析。细说一点就是这里有初始化,={0}相当于memset(a,0,sizeof(a)); 数组名是常量,是数组的首地址也是a[0]的地址。 想到常量是不是想起了,常量是不能改变的,那么我们常常用scanf(“%d”,a);来改变a[0]的地址。那么我们是不是出错了,这是常量啊。 但是,事实并不是这样的。scanf是改变这个内原创 2016-05-05 17:28:16 · 654 阅读 · 0 评论 -
二进制相关---1
1;大数的阶乘后尾0的个数,求0的个数,让我们想到0就是由2,5的乘积组成,这里我为什么没有把10,100~~~等等,都出来而只单单说只是2,和5的乘积呢,我们先回忆一下,唯一分解定理。原创 2016-08-02 20:19:30 · 320 阅读 · 0 评论 -
大数相加
大数加法的其他方法1;这种方法应该是与上次大数阶乘的方法类似吧,也是用一个int数组来存这个数,每个数组元素都存储几位数。并且进位;2;不过这个我们不需要考虑数组元素进位的问题,因为把数组开得很大,只需要进位就可以了,只是在输出的时候要注意一下,不是按原来的方法输出了,大有不同了;3;先看一下核心代码, k = 0; for(i = 0; i <= 500; i++){ ss[i] = aa[原创 2016-09-05 20:21:45 · 311 阅读 · 0 评论 -
国二常考选择题要点(后续)
1;软件相关; 1.1;软件工程的三要素;方法,工具,过程; 1.2;软件工程是应用于计算机软件的定义,开发,维护的一套方法; 1.3;软件测试的实施过程主要有;单元测试,集成测试,确认测试(验收测试),系统测试; 1.4;确认测试时检查软件产品是否符合定义; 1.5;程序设计分为;结构化程序设计,面向对象的程序设计; 软件设计就是结构化程序设计,其描述方式就是系统结构图原创 2016-09-11 20:45:59 · 3636 阅读 · 0 评论 -
c语言二维数组的传递
这个知识也是今天才知道的;只能说小菜鸟又涨见识了。 二维数组的传递有三种方法;其二维数组的数据类型都可以实现的; 1;要写出二维数组的二维大小; 2;使用指针但是二维的大小然而要写出来 3;不是普通的传递了;将二维数组预处理一下;变成指针指向最后传递指针;原创 2016-09-21 23:09:33 · 731 阅读 · 0 评论 -
汉若塔递归(读懂递归和写出递归)
还记得大一的时候在两个学长的帮助下,琢磨了几天才把这个汉若塔递归的程序看懂,琢磨清白。 现在大二了,花了5,6个小时才把他写出来。真的没感觉到进步,特别是今天发现好多东西都忘了,当推出这个递归的时候ztm尴尬,这么容易还推了这么久,不应该早就推出来了吗?汗。不说闲话直接分析了;1;关于汉若塔; 将其具体问题化; 假设有3个分别命名为X,Y,Z的塔座,在塔座X上插有n个直径大小各不相同,依小原创 2016-12-01 00:45:18 · 2176 阅读 · 4 评论 -
c语言基础语法二——循环控制条件语句(完节)
前面那篇博客介绍了c语言的一些基本语法,那些可能不能 打出有意思的程序,但是学好这节,那就是很有成就的哦,并且也会激情你对c语言的兴趣的。但是这章还是比较麻烦的,我用我自认为很好的方法介绍这节;这节的两个关键就是;1;看懂循环,就是看懂是怎么运行的,运行的步骤是怎么的顺序,我下面的程序都会标记出来的;2;懂得设计,懂得利用控制语句完成一些简单的功能,例如打乘法表,用*打三角形直接进入主题吧;原创 2016-12-09 12:27:55 · 4538 阅读 · 0 评论 -
c语言基础内容——一些基础内容(完节)
带个徒弟过国二,所以就干脆打成博客形式吧; 自己也可以回顾,加深一下学习,为学嵌入式打好基础; 考国二的可以看下,大神也可以指点一些,毕竟本人还是很菜的; 会直续更新的; 废话不多说,直接进入主题;1;计算语言的发展; 计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。然而这种相对的高级和低级,相对人的使用而言,机器语言就是01组成这更方便计算机的使用,而不方便原创 2016-11-30 12:47:24 · 3043 阅读 · 3 评论