C语言—指针,数组和内存杂讲
上周组里讲课对指针方面的知识进行了深化,以前总觉得自己指针学的还不错,但是看到这些问题才知道自己还是差太远,其中包括
- 大端与小端
- sizeof对数组名和普通指针的区别
- 下标运算符
- 数组指针和指针数组
C语言允许直接访问物理地址,可以直接对硬件进行操作
因此C既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作。
我们每个知识点会用具体的例子实现,方便理解。·
1.大端与小端
执行下面的代码,看看输出结果是什么(注意:源文件后缀为.c)
#include <stdio.h>
int main(){
short num = 0x1122; //short 占两个字节
char *c; //char 占一个字节
c = #
if(*c == 0x22)
printf("this is little end\n");
else
printf("this is big end\n");
return 0;
}
这表示我们的计算机处于小端模式,那么什么是大端模式和小端模式呢?
- 大端:数据的低位保存在高地址中,而高位保存在低地址中。
- 小端: 数据的低位保存在低地址中,高位保存在高地址中。
从上述的例子中,我们先定义一个short型的变量,我们知道short类型占两个字节,把0x1122赋给这个变量,再定义一个指向字符型的指针变量,把short变