数据类型概念

  • “类型”是对数据的抽象
  • 类型相同的数据有相同的表示形式、存储格式以及相关的操作
  • 程序中使用的所有数据都必定属于某一种数据类型

数据类型的本质

  1. 数据类型可理解为创建变量的模具(模子);
  2. 是固定内存大小的别名。

数据类型的作用

  • 编译器预算对象(变量)分配的内存空间大小
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. /*
  4. 数据类型的本质:
  5. 数据类型可理解为创建变量的模具(模子);是固定内存大小的别名
  6. 数据类型的作用:编译器预算对象(变量)分配的内存空间大小
  7. */
  8. void main()
  9. {
  10. int a; //告诉c编译器分配4个字节的内存
  11. int b[10]; //告诉c编译器分配40个节字的内存
  12. printf("b:%d, b+1:%d\n",b, b+1);
  13. printf("&b:%d, &b+1:%d\n",&b,&b + 1);
  14. //b:2029316, b+1:2029320 向后跳了4个字节
  15. //&b:2029316, &b+1:2029356 向后跳了40个字节
  16. /*
  17. b+1 &b+1结果不一样 b &b所代表的类据类型不一样
  18. b 代表数组首元素的地址 b[0]x
  19. &b 代表的是整个数组的地址
  20. b &b 数组数据类型:
  21. 1.定义一个数组类型
  22. 2 数组指针
  23. 3 数组类型和数组指针类型的关系
  24. */
  25. //求长度
  26. printf("sizeof(b):%d\n", sizeof(b)); //40
  27. printf("sizeof(a):%d\n", sizeof(a)); //4
  28. {
  29. char *p2 = NULL;
  30. void *p1 = NULL;
  31. char *p3 = "Aaaa123";
  32. //申请长度为10字节的连续存储空间,并将分配到的存储空间地址转换为char类型地址,然后把他赋给指针变量P2
  33. p2 = (char *)malloc(10);
  34. printf("p2:%d\n", strlen(p2)); //22
  35. int i = 0;
  36. for (i = 0; i < 22; i++)
  37. {
  38. //printf("%c", p2 + i);
  39. }
  40. printf("p3:%d\n", strlen(p3)); //7
  41. }
  42. {
  43. //void a; 不存在void类型变量 这样写c不知道怎么分配内存
  44. }
  45. system("pause");
  46. }