咱们知道,指针是指向一个地址的。而指针的类型则表明晰指针指向内容的巨细,即包括字节数,这在关于指针的自增和自减中表现的很清晰。
比方下面一段代码,咱们别离界说了3个不同类型的指针,指向相同的地址,然后赋予不同的值。这样一下咱们就明晰了。
- //解说代码
- char*p_char;
- short*p_short;
- long*p_long;
- p_char=(char*)0x1000;
- p_short=(short*)0x1000;
- p_long=(long*)0x1000;
- *p_char=0x12;
- *p_short=0x1234;
- *p_long=0x12345678;
从以上的代码咱们即可看出,不同类型的指针,所能表明的数据巨细不同。并且需求留意的是,对指针的赋值操作。C言语运用指针的约束是,一切关于指针的操作有必要是同类型的指针才干够进行。像0x1000这样仅仅一个数字罢了,前面加上类型咱们才干知道咱们操作的地址指向的内容是多少字节。这样就能够把指针和地址区分隔。而别的需求留意的是C言语为了提高功率关于指针作出了开始地址对齐的要求,比方short指针地址需求被2整除,而long指针地址则需求被4整除。指针的存在让咱们对内存的操作有了自在性,但自在的一起也增加了危险性。比方假如咱们界说指针类型时类型不同,那么在自增或许自减时指针地址的偏移就会不同。比方char型的指针,履行自增后指针地址加1,而short型和long型则别离是加2和加4.假如咱们编写程序中没有考虑到这点,那么很简单导致过错。并且彼此接连界说的数组地址不一定接连。这些都是不小心就会犯错的当地。
参阅《删繁就简——单片机入门到通晓》