0709 C语言常见误区----------C语言内存属性问题

1.C语言内存没有属性,本质就是一段01区域, 没有所谓的类型int, char, float 等等,仅仅表示一段内存空间。上代码。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef struct tag{
 5     int a;
 6     int b;
 7 }NODE;
 8 int main(int argc, const char *argv[])
 9 {
10     int *p = (int *)malloc(2 * sizeof(int));
11     p[0] = 1;
12     p[1] = 2;
13     NODE * arr = (NODE *)p;
14     printf("%d\n", arr->a);
15     printf("%d\n", arr->b);
16     return 0;
17 }

p指向8个字节的内存空间,并对该段内存赋值, 伺候将该段类型强制转换为结构体类型, 结果还是一样,这说明内存没有类型属性。就是一段01空间。

2.再写一个比较有代表性的例子。注意本地计算机一般都是小端模式。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <strings.h>
 4 
 5 int main(int argc, char* argv[]){
 6     char * p = (char *)malloc(4 * sizeof(char));
 7    /*
 8     p[0] = '\0';
 9     p[1] = '\0';
10     p[2] = '\0';
11     p[3] = '1';*/
12     p = "1\0\0\0";
13     int  *q = (int*) p;
14     printf("*q : %x\n", *q);
15     return 0;
16 }

 

 

posted @ 2014-07-10 00:42  Monica_Lee  阅读(227)  评论(0编辑  收藏  举报