您的位置:首页 > 编程语言 > C语言/C++

4c语言数据类型和变量

2019-11-24 21:11 1461 查看

2.1数据类型知多少

对于类型所占的内存是多大,可以使用sizeof()测试。
空类型:普通变量没有这个类型,指针类型有这个类型
数据类型的本质是:固定内存大小的别名。
2.2基本类型

int main()
{
int a;//告诉编译器分配4个字节
int b[10];//告诉编译器分配4*10个字节
//类型的本质是固定内存块大小的别名
//同过sizeof()测试具体分配多大的内存空间
printf("sizeof(a)=%d sizeof(b)=%d\n",sizeof(a),sizeof(b));

return 0;
}

运行结果:

//打印数组b的地址
printf("b=%d &b=%d",&b,b);

运行结果:

//数组加1
printf("b=%d &b=%d\n",b+1,&b+1);


地址一样,为什么+1后就不一样了那?

//是数组首元素地址,一个元素4个字节,加一就是在原地址上加4个字节
//&b是整个数组的首地址,一个数组是4*40=40个字节,加1就是加了40
//测一下指针变量的内存大小是多少
//指针长度是:32位系统,指针长度都是4
//                      64位系统,指针长度都是8
char *p;
printf("sizeof(p)=%d\n",sizeof (p));
double ***q;
printf("sizeof(q)=%d\n",sizeof (q));

运行结果:

2.3数据类型的别名:typedef

typedef unsigned int u32;
//第一种结构体
struct std1
{
int a;
int b;
};
//第二种别名结构体
typedef struct std2
{
int c;
int d;

}std2;
int main()
{
u32 t;//给unsigned int 类型取别名
t=33;
//typedef 通常与结构体一起使用
//使用第一种结构体
struct std1 std={1,2};
std.a=3;
//使用第二种别名结构体
std2 std3={3,4};
std3.c=2;
return 0;
}

2.4void类型
先看一下void怎么用


//* void 无类型
// * 1函数参数为空,定义函数时,可以用void修饰
// * 例如:int fun(void);
// * 2函数没有返回值:void fun(void);
// * 3不能定义void类型的普通变量:void a;//error无法确定类型,不同类型分配内存不一样
// * 4可以定义void *变量:void *p;//ok,32位分配4个字节,64位分配8个字节,可以固定
// * 5数据类型本质就是固定内存块大小
// * 6void *p万能指针,函数返回值,函数参数

int main()
{

// c语言规定:只有相同类型的指针才能相互赋值,如是不同需要类型强制转换
char *p=(char *)malloc(sizeof(char)*10);

return 0;
}

void的具体用法我们会在后面慢慢体会它的好处。
2.5变量
C语言规则:变量必须先定义才能使用。

//变量本质是一段连续的内存空间别名
//变量相当如门牌号,而内存就相当于房间
//可以通过门牌号找到房间
int main()
{
//直接赋值
int a=20;
int *p;
printf("a=%d\n",a);
//间接赋值
//指针指向谁,就把谁的地址赋值给指针,指针就指向其内存
printf("&a=%d\n",&a);
p=&a;
printf("p=%d\n",p);
*p=10;
printf("a=%d\n",a);
printf("*p=%d\n",*p);
return 0;
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐