实习日报3

姓名:周海阳     日期:2018年6月21日

今日学习任务:C语言的基础训练

数组:
未初始化的全局变量为0;
未初始化的局部变量为垃圾值;
如果对数组的一部分初始化了,其余的未赋值的为0;


GCC编译经过四个步骤(百度详细)
1.预处理:处理以#开头的东西 如头文件,宏定义,条件编译#if...
2.编译:.c --> .i   中间经过最重要的一步!!检查语法错误!!
3.汇编:转换成汇编文件
4.链接:在复杂的工程里,将所有的文件合在一起;链接我们所需要的库


int i=1;
地址 0x100 0x101 0x102 0x103
低地址     高地址
字节 00000000 00000000 00000000 00000001
高字节     低字节
字节序:每个设备不同分大端小端
大端:低字节存在高地址
小端:低字节存在低地址
如何判断大小端:
#include <stdio.h>
union test
{
short val;
char t[2];
};
int main()
{
union test te;
te.val = 0x0102;

if(te.t[0] == 1 )
{
printf("大端\n");
}
else
{
printf("小端\n");
}
while (1);
return 0;
}


一维数组:
a 数组名 也是数组首个元素的地址 a+1表示的是加一个数组元素
&a 数组的地址 &a+1 表示加一个数组


二维数组:
a 数组名,也是数组首行的地址 a+1 加一行
&a 数组的地址 &a+1 加一个数组
a[0][0] 数组首行首元素的地址  a[0][0]+1 加一个元素
a[0] 数组首行首元素的地址  a[0]+1 加一个元素
*a 数组首行首元素的地址  *a+1 加一个元素
* [] 两个符号是等价的!
a[0] == *a   a[1] == *(a+1)


int i;
int a[5] = {0};
for(i = 0 ; i < sizeof(a) / sizeof(a[0]) ; i++ )
{
printf("%d ",a[i]);
}
printf("\n");


printf("%p\n",&a[0]);
printf("%p\n",a);
printf("%p\n",&a);


printf("%p\n",&a[0]+1);
printf("%p\n",a+1);
printf("%p\n",&a+1);


——————————————————————————————————————————————————————————————




int 实参
函数(形参)


函数调用的六个步骤:
1.通过函数名找到函数入口地址
2.给函数的形参分配空间
3.传值(值传递,地址传递)
4.执行函数体
5.返回
6.释放空间!!!


*str = (char *)malloc(sizeof(char) * 100); //malloc向系统申请分配char字节的内存空间 堆


static:修饰全局变量 改变变量的作用域 只能在本文件被使用
修饰函数,也是改变函数的作用域 只能在本文件被使用
修饰局部变量,改变变量的生命周期(本来局部变量在函数运行完的时候就结束了,加上staic直到程序退出才结束)


#define PRINT printf("hello")  //宏函数
#define P(s) printf("%s\n",s) //有参的宏函数


#define SQR(x) x*x
int main()
{
int a = 1 ,b = 2;
printf("%d\n",SQR(a + b)); //input 5       1+2*1+2
while(1);
}


typedef unsigned char uchar
#define uchar unsigned char

今日任务完成情况:按照作业要求,完成约200行代码。

今日开发中出现的问题汇总:不懂问百度,实在不行就谷歌。

今日未解决问题:无。

今日开发收获:复习了C语言的知识,对自己的动手能力有所提升。实现一种功能可以有许多方法,要扩展思维

自我评价:一般,不太满意。

其他:无

猜你喜欢

转载自blog.csdn.net/sinat_39440759/article/details/80777659
今日推荐