苏嵌嵌入式实训Linux第五天

课程内容: 1、位运算:&、|、^、<<、>>、~. 比如利用位运算讲一个输入的整数转化位n位的二进制的形式(利用位运算将其转化的过程会比利用加减乘除所需要的时间短,效率高) 2、宏指令(避免幻数):利用宏指令能使源文件在被维护的时候更加方便 #define MAX #define SIZE #define LONGIN_SUCCESS 利用宏去进行调试: 比如printf(“%s:%d ”,FUNC,LINE);用于显示代码所在的函数名和行号 防止文件定义重复: #pragma once(预处理,只引用一次) #include…… 3、编码规范 4、指针(8个字节)、数组(内存管理) Int num =5; 假如num的空间地址0x1000——那么p++;指的就是0x1008(修改p对应的空间) Int *p=# p指向的空间就是num的内存空间 Int **pp=&p; (*p)++;指的就是num的空间取值5+1(修改p指向的空间) 分清指向空间和对应空间 取值运算符 &取地址 多维指针的作用:保存前一维指针变量的地址; 万能指针:void:可以接受任何类型的指针的值(不能取值和运算) 5、数组 Sacanf (“%d” , &a[i] ); printf( “ a [%d] =%d ” , i , a[i] ); Sacanf (“%d” , a+i); printf( “ a [%d] =%d ”, i , *(a+i) ); 一位数组名:指针常量,保存数组收元素的地址(所以不能a++:a是个常量) 也可以int *P=a; Sacanf (“%d” ,p++ ) ;(p指的是数组的地址)

printf( “ a = %p ”, i , a ); 二者输出的结果可能一样 但是第一个输出的是数组的首字节的地址,字节可能为4 printf( “ a = %p ”, i , &a ); 这个这是输出的是数组的地址,字节可能为4n(n代表的是数组的元素个数)

*(&a)=a;(取值和取地址互为逆运算) 结论:对一维数组的地址取值等于一维数组首元素的地址

作业:

经验分享 程序员 微信小程序 职场和发展