字、双字和四字在自然边界上不需要在内存中对齐。对字、双字和四字来说,自然边界分别是偶数地址、可以被4整除的地址和可以被8整除的地址。无论如何,为了提高程序的性能,数据结构应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要做两次内存访问;然而,对齐的内存访问仅需要一次访问。
#include <stdio.h>
struct TestStruct1
{
char c1;
short s;
char c2;
int i;
}str_a;
struct TestStruct2
{
char c1;
char c2;
short s;
int i;
}str_b;
int main(void)
{
printf("size of str_a:%d\nsize of str_b:%d\n",sizeof(str_a),sizeof(str_b));
while(1);
return 0;
}
指针就是指针,在32位系统,指针变量永远占4字节,其值为某一个内存的地址。指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到。
数组就是数组,其大小与元素的类型和个数有关;定义数组的时必须指定其元素的类型和个数;数组可以存任何类型的数据,但不能存函数。
指针和数组是两个完全不一样的东西。只是他们都可以“以指针的形式”或以“以下标的形式”进行访问。
文章评论(0条评论)
登录后参与讨论