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类型的时候,不能输入汉字,并且不能输入两个字符
红色字符为常用类型
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