求解字节大小,字节对齐

struct和class区别:

类有虚函数


union://联合体


enum { //枚举  成员不需要定义其类型 

     monday;

     tuesday;

     ...

}


void func(void*)//可以传进任何类型的指针


//每种类型的内存大小

struct A

{

    int i;

    char j;

};


union B

{

    int a;

    char b;

};

#pragma pack(4) //字节对齐  默认是4

int的内存大小:4

char*的内存大小:8

long*的内存大小:8

double的内存大小:8

char的内存大小:1

struct的内存大小:8

union的内存大小:4

float的内存大小:4

long的内存大小:8

注意:struct是内存计算是按照内存最大的成员类型*成员数来计算的

     union是是以单元中以一个最大的变量来计算


#include<> //系统自带的文件  ,指拷贝文件中的内容到源程序中

#include"" // 自己自定义的文件  可以包含.h  .hpp  .cpp,甚至.txt都可以


.c文件编译之后为.obj,名字为之前的名字


C语言的运行步骤:

1.在编译前先执行#include指令,拷贝stdio.h的内容到源程序中

2.编译源程序,生成目标文件

3.链接C语言函数库,生成可执行文件

4.运行可执行文件,在屏幕上输出"Hello, World!"


auto是C语言中局部变量的默认属性,编译器默认所有的局部变量都是auto,局部变量都是保存在栈上面的


输出%4d,指输出的这个变量占用4个字符空间  如果不满足则在左边用空格代替

输出%-4d,指输出的这个变量占用4个字符空间,如果不满足则在右边用空格代替

如果实际输出的空间比限定的空间大,则按照实际的字符数来控制

输出%8.1f,指输出的小数类型 小数点前是八个字符空间,小数点后面是1位小数


char只能存储一个字符,一个汉字占两个字符 所以要输入一个字符的char类型的时候,不能输入汉字,并且不能输入两个字符

红色字符为常用类型

2013-7-8(C基础) - 蓬莱仙羽 - IT达人的博客

 


C语言里没有标准的bool类型,0代表假,1不一定代表真,在switch中不要使用判断语句

标准的if判断语句,尽量这么写if(0==a),而不要写成if(a==0),更不能写成if(a=0)


float不能直接跟0进行比较



#include <stdio.h>

#pragma pack(4) //字节对齐

int max(int a,int b);

struct A

{

    int i;

    char j;

    char d;

    char e;

    char f;

};


typedef struct C

{

    int j;

    long k;

    char i;

}B;


union B

{

    int a;

    char b;

    char c;

    char d;

    char e;

    char f;

};

union D

{

    int a;

    long b;

    char v;

    long c;

};

int main(int argc, const char * argv[])

{

    // insert code here...

    char *c;

    int res=max(1, 2);

    printf("1,2最大值是:%d\n",res);

    /*int j,k;

    scanf("%d,%d",&j,&k);

    int sum=j+k;

    printf("%d+%d=%d\n",j,k,sum);

     */

    printf("int的内存大小:%d\n",sizeof(int));

    printf("char*的内存大小:%d\n",sizeof(char*));

    printf("long*的内存大小:%d\n",sizeof(long*));

    printf("double的内存大小:%d\n",sizeof(double));

    printf("char的内存大小:%d\n",sizeof(char));

    printf("struct A的内存大小:%d\n",sizeof(struct A));

    printf("struct B的内存大小:%d\n",sizeof(B));

    printf("union B的内存大小:%d\n",sizeof(union B));

    printf("union D的内存大小:%d\n",sizeof(union D));

    printf("float的内存大小:%d\n",sizeof(float));

    printf("long的内存大小:%d\n",sizeof(long));

    

    printf("Hello, World!\n");

    return 0;

}

int max(int a,int b)

{

    if(a<b)

    {

        return b;

    }

    else

    {

        return a;

    }

}

运行结果:

1,2最大值是:2

int的内存大小:4

char*的内存大小:8

long*的内存大小:8

double的内存大小:8

char的内存大小:1

struct A的内存大小:8

struct B的内存大小:16

union B的内存大小:4

union D的内存大小:8

float的内存大小:4

long的内存大小:8

Hello, World!



高级:

struct A

{

    int a;

    double b;

    char c;

};


union B {

    int a;

    double b;

    char c;

};


union C

{

    int i;

    struct A a;

};


struct D

{

    int i;

    struct A a;

    char c;

    double e;

};


struct E

{

    int i;

    union C c;

};

    printf("struct A:%d\n",sizeof(struct A));

    printf("union B:%d\n",sizeof(union B));

    printf("union C:%d\n",sizeof(union C));

    printf("struct D:%d\n",sizeof(struct D));

    printf("struct E:%d\n",sizeof(struct E));

运算结果:

struct A:24

union B:8

union C:24

struct D:48

struct E:32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值