
从零开始学嵌入式-2.LinuxC语言进阶
2.LinuxC语言进阶
Jing's secret
头发少,样子老,背个双肩包像沙雕
展开
-
2.15 递归函数与函数指针
如输入5,计算过程为5 4 3 2 1,遇到1时return到2的计算过程中,输出结果。递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到递归终止条件。<数据类型>(*<函数指针数组名称>[大小])(<参数说明列表>);递归函数是指一个函数的函数体中直接或间接调用了该函数自身。函数指针用来存放函数的地址,这个地址是一个函数的入口地址。<数据类型>(*<函数指针名称>)(<参数说明列表>);函数指针数组是一个保存若干个函数名的数组。其中,<大小>是指函数指针数组元素的个数。函数名代表了函数的入口。原创 2023-04-21 14:26:50 · 140 阅读 · 0 评论 -
2.14 指针函数
指针函数返回值为:全局变量的地址/static变量的地址/字符串常量的地址时可以返回/堆上的地址。原创 2023-04-20 16:52:12 · 85 阅读 · 0 评论 -
2.13 函数的传参 下
main函数中的x、n是实参,power函数中的a,b是形参,main函数在调用power函数时通过复制传递的方式将main函数中的实参复制给power函数中的形参进行调用。- 被调用函数中对形参的操作,将直接改变实参的值(被调用函数对指针的目标操作,相当于对实参本身的操作)- 调用的函数将实参传递给被调用函数,被点用函数将创建同类型的形参并用实参初始化。- 形参是新开辟的存储空间,因此,在函数中改变形参的值,不会影响到实参。- 按地址传递,实参为变量的地址,而形参为同类型的指针。用函数实现两个整数交换。原创 2023-04-19 11:24:25 · 69 阅读 · 0 评论 -
2.12 函数的基本用法及传参
函数是一个完成特定工程的代码模块,其程序代码独立,通常要求有返回值,也可以是空值一般形式如下数据类型>(){语句序列return [];} //表达式的类型要与数据类型保持一致当函数数据类型是void是,返回值为空;- 是整个函数的返回值的类型。return[]语句中表达式的值,要和函数的保持一致。如无返回值,应该写成void类型- 是以“,”分隔的多个变量的说明形式。原创 2023-04-18 16:25:35 · 77 阅读 · 0 评论 -
2.11 多级指针、void指针及const指针
在很多库函数或系统调用时,参数中都是void指针,所有用到void的地方,都是想说明,void的位置,都可以强制转换成客户需要的类型,如动态内存的管理、快速排序、创建线程的一些参数等都有用到void指针,可以使功能应用更广泛。再比如int ***p,p+1移动一个int**所占的内存空间。常量化指针目标是限制通过指针改变其目标的数值,但<指针变量>存储的地址值可以修改。- 而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针。- 把一个指向指针变量的指针变量,称为多级指针变量。int * * q;原创 2023-04-18 11:32:59 · 266 阅读 · 0 评论 -
2.10 指针数组
int * p[3];//相当于三个指针p[0] p[1] p[2]<指针数组名>[<大小>] //可以将红色看作是一个整体。指针数组名表示该指针数组的起始地址。相同存储类型和数据类型的指针变量。一个指针在内存中占用4个字节。所谓指针数组是值由若干个具有。指针数组经常与多维数组相结合。指针数组名相当于一个二级指针。<存储类型><数据类型>*原创 2023-04-17 16:08:54 · 66 阅读 · 0 评论 -
2.9 字符指针与字符串
C语言通过使用字符数组来处理字符串通常,我们吧char数据类型的指针变量称为字符指针变量。字符指针变量与字符数组有着密切关系,它也被用来处理字符串<存储类型><数据类型>*<变量名>初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中。原创 2023-04-17 14:57:49 · 79 阅读 · 0 评论 -
2.8 指针与二维数组
a[2][3],p[2][3],*(*(a+2)+3),*(*(p+2)+3),这四个表达方式结果相等。比如int a[3][3],含有三个元素:a[0]、a[1]、a[2]- 二维数组名代表数组的起始地址,数组名加一,是移动一行元素,因此,<存储类型><数据类型>(*<指针变量名>)[表达式];- 在C语言中,二维数组的元素连续存储,按行优先存储。如:int a[2][3];元素a[0]、a[1]、a[2]都是一维数组名。存储航地址的指针变量,叫做行指针变量。- 可以把二维数组看作由多个一维数组组成。原创 2023-04-17 11:59:50 · 69 阅读 · 0 评论 -
2.7 指针与数组
指针变量和数组在访问数组中元素时,一定条件下其使用方法具有相同的形式,因为 指针变量和数组名都是地址量。- 但指针变量和数组的指针(或叫数组名)在本质上不同,指针变量是地址变量,而数组的指针是 地址常量。- 在C语言中,数组的指针是指数组在内存中的起始地址,数组元素的地址是 指数组元素在内存中的起始地址。x[i]、*(px+i)、*(x+i)和px[i]具有完全相同的功能:访问数组第i+1个数组元素。- 一维数组的数组名为一维数组的指针(起始地址)原创 2023-04-17 09:40:59 · 59 阅读 · 0 评论 -
2.6 指针的运算
指针与一般整数变量之间的关系运算没有意义,但可以和零进行等于或不定于的关系运算,判断指针是否为空(NUll)- 两指针之间的关系运算表示它们指向到地址位置之间的关系。指向地址打的指针大于指向地址小的指针。- 指针运算的种类是有限的,它只能进行赋值运算、算术运算和关系运算。两个指针想减的结果值不是地址量,而是一个整数值,表示两指针之间。- 指针运算是以指针变量所存放的地址量作为运算量而进行的运算。不同数据类型的两个指针进行加减整数运算是无意义的。- 指针运算的实质就是地址的计算。原创 2023-04-15 13:54:34 · 62 阅读 · 0 评论 -
2.5 指针的基本用法
如果它指向到到区域是程序中的一个变量的内存空间,则这个变量称为指针的目标变量,简称为指针的目标。注意.引入指针要注意程序中的px,*px和&px三种表示方法的不同意义。在不影响理解的情况中,有时对地址、指针和指针变量不区分,通称指针。指针说明时指定的数据类型不是指针变量本身的数据类型,而是。指针的赋值运算指的是通过赋值运算符向指针变量送一个。把一个普通变量的地址赋给一个具有相同数据类型的指针。&px 指针变量占用的存储区域的地址,是个常量。*px 指针所指向的对象,它的内容是数据。原创 2023-04-14 14:31:05 · 76 阅读 · 0 评论 -
2.4 字符串处理函数下
strncpy(p,p1,n)复制指定长度字符串。strncat(p,p1,n)附加值定长度字符串。strncmp(p,p1,n)比较指定长度字符串。strchr(p,c)在字符串中查找指定字符。isupper()检查是否为大写字母字符。islower()检查是否为小谢字母字符。isalpha()检查是否为字符字符。strstr(p,p1)查找字符串。在头文件中含有。isdigit()检查是否为数字。tolower()字母大写转小写。toupper()字母小写转大写。原创 2023-04-14 11:11:47 · 61 阅读 · 0 评论 -
2.3 字符串处理函数上
2.连接前,两串均以‘\0’结束,链接后,串1的‘\0’取消,新串最后加‘\0’比较规则:对两串从左向右逐个字符比较(ASCLL码),直到遇到不同字符或‘\0’为止。返值:返回字符串实际长度,不包括‘\0’在内。strcat(字符数组1,字符数组2)格式:strcpy(字符数组1,字符串2)格式:strcmp(字符串1,字符串2)功能:将字符串2,拷贝到字符数组1中去。功能:把字符数组2连接到字符数组1后面。格式:strlen(字符数组)返值:返回字符数组1的书地址。返值:返回字符数组1的首地址。原创 2023-04-14 10:17:28 · 62 阅读 · 0 评论 -
2.2 字符数组和字符串
用字符串常量 ”abc“(注:其中最后含有‘\0’,否则‘a’‘b’‘c’不等于”abc“)如果使用printf打印,系统会默认打印的为字符串,遇到\0才会停止,占位符为”%s“C语言中无字符串变量,用字符数组处理字符串,字符串结束标志:‘\0’,多占一个字符。如何查看一个字符串中有几个字符,这里可以使用一个函数。字符数组是元素的数据类型为字符类型的数组。strlen:计算字符串中字符的长度。逐个字赋值 ‘a’在头文件中。字符数组+\0 = 字符串】原创 2023-04-13 18:34:21 · 66 阅读 · 0 评论 -
2.1 二维数组
1.一维数组名代表数组的起始地址,是个常量,不可修改。2.对数组名求sizeof是这个数组占用的总空间。行名a[0]、a[1]可以理解为一维数组名。可以理解为二维数组是由多个一维数组组成的。数据类型 数组名 [常量表达式] [常量表达式]例:int a[3][4](标号错位了,理解就好)定义方法:(声明列数不能省略,行数可以省略)按元素排列顺序初始化。二维数组:按行序优先。2.找出三行四列数组中的最大值。形式:数组名[下标][下标]二维数组元素的初始化。原创 2023-04-13 14:35:06 · 81 阅读 · 0 评论