其他分享
首页 > 其他分享> > 4c语言数据类型和变量

4c语言数据类型和变量

作者:互联网

2.1数据类型知多少
4c语言数据类型和变量
对于类型所占的内存是多大,可以使用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;
}

运行结果:

4c语言数据类型和变量

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

运行结果:
4c语言数据类型和变量

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

4c语言数据类型和变量
地址一样,为什么+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));

运行结果:
4c语言数据类型和变量
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怎么用

4c语言数据类型和变量
4c语言数据类型和变量

 //* 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;
}

运行结果:
4c语言数据类型和变量

标签:变量,int,void,数据类型,printf,类型,sizeof,4c,指针
来源: https://blog.51cto.com/14165014/2453098