项目名称 | 【苏嵌实训-嵌入式 linux C 第 n 天】 | |
今日进度以及任务 | 1、位运算 2、预处理 3、编码规范 4、指针 5、数组 | |
本日任务完成情况 (详细说明本日任务是否按 计划完成,开发的代码量) |
1、位运算:& | >> << (1)“无符号数”,“按位左移或右移” (2)按位与运算---通常对某些位清0或保留某些位;按位或运算---通常用来将源操作数某些位置1,其他位不变;异或----使特定值取反 (3)32位进制转化16进制。’0’、’a’。 (4)不引入第三方变量,值互换:A、异或 B、+、-。 2、预处理: 傻瓜式操作,不安全,容易出错。 特点:省去函数调用返回的时间,省去了给形参分配空间和释放。
宏函数(用编译时间换内存空间和运行时间) 适用:频繁调用且功能短小的函数 3、指针: (1)指针是一个变量,保存的是地址(作用:直接访问硬件) (2)指针类型是根据存储的地址的类型 (3)*取值运算符,&取地址 (4)Int *pp=&p;int ***ppp =&pp 多维指针的作用:保存前一维指针变量的地址 (5)万能指针void*:可以接收任何类型指针的值 (6)野指针 4、数组: 对一维数组的地址取值等于一维数组首元素地址 *(*(aa+i)+j): aa+i:二维数组中第i+1个一维数组的地址 *(aa+i):二维数组中第i+1个一维数组的首元素的地址 *(aa+i)+j:二维数组中第i+1个一维数组的第j+1个元素的地址 *(*(aa+i)+j):二维数组中第i+1个一维数组的第j+1个元素的值 | |
本日开发中出现的问题汇总 |
| |
本日未解决问题 |
| |
本日开发收获 |
| |
其他 |
|
#include
'stdio. h
void print1(char *ptr )
printf("ptr= %s\n" ,ptr);
void print2(char (*ktr)[50])
int i;
for(i=0;i<2;i++)
printf("ktr[%d]= %s\n" ,i,*(ktr +i));
void print3(char (*str)[2][50])
inti
int j;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("str[%d][%d]= %s\n" ,i,j,*(*(str+i)+j));
}
int main()
char ptr[50] = "hello";
char ktr[2][50] = {"hello1" ,"hello2"};
char str[2][2][50] = {{"hello3" ,"hello4"},{"hello5" ,"hello6"}};
print1(ptr );
print2(ktr );
print3(str );
return 0;
}
LS@zxc-vir tua L-machine:~/0708$ gcc demo. C
LS@zxc -virtuaL-machine:~/0708$ . /a. out
ptr= hello
ktr[0]= hello1
ktr[1]= hello2
str[0][0]= hello3
str[0][1]= hello4
str[1][0]= hello5
str[11[ 11= hello6