这里只是自己平时学习做的一些笔记,便于以后的查看。
大家先思考一下:
1、数据类型的本质思考
1)思考数据类型和内存有关系吗?
2)C/C++为什么会引入数据类型?
2、其实,数据类型的本质:
1)数据类型可以理解为创建变量的模具;是固定内存大小的别名。
2)数据类型的作用:编译器预算对象(变量)分配的内存大小。
3)程序举例,如何求数据类型的大小sizeof(int *)
4)数据类型可以有别名吗?数据类型可以自定义吗?
// datatype.cpp : 定义控制台应用程序的入口点。
//数据类型的用途
//数据类型的本质:固定大小内存块的别名
//重点:b和&b数组数据类型(定义一个1、数组类型 2、数组指针 3、数组类型和数组指针类型的关系
基本上是压死初学者的三座大山)
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
*************************************************************
void main1()
{
int a; //告诉编译器分配4个字节的内存
int b[10]; //告诉编译器分配40个字节的内存
printf(" b:%d\n b+1:%d\n &b:%d\n &b+1:%d\n", b, b+1, &b, &b+1);
printf("sizeof(a):%d\n",sizeof(a));//4
printf("sizeof(b):%d\n",sizeof(b));//40
system("pause");
}
打印结果!
![这里写图片描述](https://img-blog.csdn.net/20151012200411989)
从打印结果来分析,b和b+1差的结果为4,而&b和&b+1差的结果则为40,其实原因是因为b和&b所代表的数据类型是不一样的
这里:
//b代表的是数组首元素的地址
//&b代表的则是整个数组的地址
***********************************************************
//数组类型能够取别名吗
//C++编译器对struct进行增强,其实在.cpp文件也可以,而在.c文件中不可以,希望下面注意
struct Teacher
{
char name[64];
int age;
}Teacher ;
typedef struct Teacher2
{
char name[64];
int age;
}Teacher2 ;
//数据别名typedef
typedef int u32;
void main()
{
int a; //告诉编译器分配4个字节的内存
int b[10]; //告诉编译器分配40个字节的内存
struct Teacher t1;
//Teacher t1;//error C语言中是不认识的,但是.cpp是可以的
Teacher2 t2;//这样没问题
t1.age = 31;
printf("u32:%d\n,sizeof(u32)");//也是四个字节
system("pause");
}
**************************************************************