随笔分类 - C语言
摘要:存储模式:小端:较高的有效字节存储在较高的存储器地址,较低的有效字节存储在较低的存储器地址。大端:较高的有效字节存储在较低的存储器地址,较低的有效字节存储在较高的存储器地址。STM32 属于小端模式,简单地说:比如:temp=0X12345678;假设temp的地址为:0X4000 0000那么,在
阅读全文
摘要:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。 1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为
阅读全文
摘要:联合体在单片机中的应用 单片机中经常会遇见分离高低字节的操作,比如进行计时中断复位操作时往往会进行 (65535-200)/256,(65535-200)%256这样的操作,而一个除法消耗四个机器周期,取余也需要进行一些列复杂的运算,如果在短时间内需要进行很多次这样的运算无疑会给程序带来巨大的负担。
阅读全文
摘要:1,函数指针函数指针,顾名思义就是函数的指针,而指针其实就是地址,那么函数指针就是存储函数的地址,可是实际大部分时间里,我们写程序时是根本不会去考虑函数地址在哪里。我们只需要知道函数原型和函数声明就可以。但是想象一下,我们总是以为函数就应该接收参数,那么函数本身是否可以作为函数的参数呢?我做了下面的
阅读全文
摘要:view plain copy关内联函数键字inline view plain copyvoid myprintf(int a) { priintf(“%d”,a); } int main() { for(i=0;i《100;i++) myprintf(3); } 对于这个函数,在进行反复的打印3的
阅读全文
摘要:内联函数是一种编译机制,优点从代码上是看不出来的,但是程序的执行效率上有差别,通常,编译器对函数调用的处理是一种类似中断的方式,即当执行到函数调用语句时,程序把当前所有的状态信息比如CPU所有寄存器(其中一个很重要的就是指令指针寄存器)的值保存起来,然后放心大胆地转去执行那个函数的代码,执行完后再返
阅读全文
摘要:s.member等价于(&s)->member。反之:(*p).member则是(&(*p))->member,即是p->member,解了指针又取指针,绕回来了
阅读全文
摘要:当我们定义一个数组a时,编译器根据指定的元素个数和元素的类型分配确定大小(元素类型大小*元素个数)的一块内存,并把这块内存的名字命名为a。名字a一旦与这块内存匹配就不能改变。a[0],a[1]等为a的元素,但并非元素的名字。数组的每一个元素都是没有名字的。 这里&a[0]和&a到底有什么区别呢?a[
阅读全文
摘要:在 C 语言中,可以使用一个 C 文件(*.c 文件)和 H 文件完(*.h 文件)成“类”的定义,将所有需要封装的东西都存于 C 文件中,H 文件中只展现那些“对外可见、无需封装”的内容。
阅读全文
摘要:/*在函数里面改变一个外部变量,就需要变量的地址 如果是数据,需要指向数据的指针存储数据的地址 如果是指针,就需要指向指针的指针存储指针的地址 //二级指针一般用于改变一个字符串指针的指向,指向不同的字符串 */ #include<stdio.h> #include<stdlib.h> char s
阅读全文
摘要:一个错误的例子: void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); // str 仍然为
阅读全文