首页 > 代码库 > 《深入理解C指针》学习笔记(1)--- 指针之外

《深入理解C指针》学习笔记(1)--- 指针之外

  C语言从诞生之初就非常善于和硬件打交道,经过这么多年的发展之后,其灵活性和超强的特征是受到几乎所有程序员的肯定。C语言的这种灵活性很大一部分程度来源与C指针,指针为C语言动态操控内存提供了支持,同时也便于访问硬件。由于编程的本质就是操控数据,而数据大多都在内存中,理解C管理内存的工作原理,就显得尤为重要了。知道malloc()函数能够从堆上申请内存,理解内存分配的本质则是另外的事。

  请看代码例子:

  

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4
 5 int main(int argc, char **argv)
 6 {
 7     typedef struct student{
 8         char name[10];
 9         char class[6];
10         char sex[2];
11         int age;
12         //char zhu
13     } Student;
14
15     Student stu;
16     strcpy(stu.name, "zhangsan");
17     strcpy(stu.class, "A1411");
18     strcpy(stu.sex, "na");
19     //stu.zhu = ‘n‘;
20     stu.age = 19;
21
22     printf("The stu information: \n");
23     printf("Name:\t%s;\n", stu.name);
24     printf("Class:\t%s;\n", stu.class);
25     printf("Sex:\t%s;\n", stu.sex);
26     printf("Age:\t%d;\n", stu.age);
27     //printf("Zhu:\t%c;\n", stu.zhu);
28
29     printf("The struct stu‘size is %d\n", sizeof(Student));
30
31     return 0;
32 }

  保留12、19、27行的代码的执行结果:

  The stu information:
  Name:   zhangsan;
  Class:  A1411;
  Sex:    na;
  Age:    19;
  Zhu:    n;
  The struct stu‘size is 28
  其中12行代码和11行代码交换后执行结果:

  The stu information:
  Name:   zhangsan;
  Class:  A1411;
  Sex:    na;
  Age:    19;
  Zhu:    n;
  The struct stu‘size is 24


  注释12、19、27行的代码的执行结果
  The stu information:
  Name:   zhangsan;
  Class:  A1411;
  Sex:    na;
  Age:    19;
  The struct stu‘size is 24

  唯一的区别就是在结构体中增加了一个char型字符,但是结构体的大小增加了四个。

  这个例子充分说明想学好C语言,必须搞定C语言中计算机的内存分配的原理和机制,否则C语言总是一知半解的。

《深入理解C指针》学习笔记(1)--- 指针之外