4c语言数据类型和变量
作者:互联网
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;
}
运行结果:
标签:变量,int,void,数据类型,printf,类型,sizeof,4c,指针 来源: https://blog.51cto.com/14165014/2453098