您的位置:首页 > 其它

关于不同数据类型存储方式的的理解

2013-10-10 22:43 411 查看
计算机的内存中,所有使用的数据都是以二进制的形式线性的存储在内存中。各种编程语言中的定义了很多种不同的类型,根本上讲这些不同类型的变量的存储都是以二进制线性存储的,之所以要定义出这么多类型,只是方便用户(程序员)采用不同的方式引用或者处理这些不同类型的变量。不同的数据类型表现形式不同,但存储的的本质是一样的。看看下面的代码 就知道我在说什么了。

#include<stdio.h>
#include <string.h>
typedef struct _pack_data{
int a;
char b[5];
union pq_pack_data{

long index;
long age;
}pa_data;

}pack_data_t;

int main(int argc,char **argv)
{
char buf[100];
memset(buf,0,sizeof(buf));
pack_data_t pack_data ;
pack_data.a = 1;
memcpy(pack_data.b,"123",3);
pack_data.pa_data.age = 13;
memcpy(buf,&pack_data,sizeof(pack_data));

pack_data_t pack_data2;
/*把变量pack_data的内容存到buf中,体现了数据的存储本质是一样的,都是存在内存中,跟数据类型无关。在这里buf中有了数据 但是不能用buf[num],
**这种方式来访问其中的内容。虽然pack_data的内容是复制到了buf中,但数据的存储方式是以变量pack_data的方式存储的。要打印buf中的数据,
**必须采用pack_data变量的格式打印。即有下面的代码:
*/
memcpy(&pack_data2,buf,sizeof(pack_data));

printf("pack_data2.a = %d\n", pack_data2.a);
printf("pack_data2.b  = %s \n", pack_data2.b);
printf("pack_data2.pa_data.age = %d\n", pack_data2.pa_data.age);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐