一.数据类型及长度
1.java(虚拟机平台,数据长度固定)
byte short int long float double char boolean
1 2 4 8 4 8 2 不确定(4或1)
2.C语言(不同平台数据长度不同)
char short int long float double
1 可用sizeof获取数据长度
signed(默认) unsigned
枚举
enum WeekDay{
Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
};
enum WeekDay wd = Sunday;
printf("%d\n",wd);
联合体
union mix{
double d; int i; char c;
};
在Union中,所有成员不能同时存在,总长度等于最长成员的长度
结构体
struct date {
double year;int month;char day;
};
在struct中,各成员同时存在,总长度等于所有成员之和
二.输入输出
#include // 输入输出库
#include
system("java hello");// 调用系统命令,执行java代码
system("pause");// 调用系统命令,让控制台暂停
1.输出
%hd short half d
%d int
%ld long int
%f float
%lf double long float
%u 无符号数
%x 十六进制
%o 八进制
%c char
%s 字符串
int i=3;
printf("int =%d\n",i);
2.输入
int i;
char c[3];
scanf("%d",&i);
scanf("%s",c);
三.指针
1.指针代表内存地址
指针变量 存放内存地址的变量
*含义
1.乘法
2.指针变量类型 int* p;
3.指针变量取值 *p = 2;
2.指针常见错误
1不给指针变量赋值,直接用,野指针 int* p; *p =2;
2指针类型和赋值类型不匹配 float f; int* i=&f;
3.指针和数组
数组元素在一块连续内存中
数组变量对应数组首元素地址 int a[3]; a=&a[0];
char* c="HelloWorld" 表示字符串char c[]="HelloWorld";
4.多级指针
int i=3;
int* p1=&i;
int** p2=&p1;
int*** p3=&p2;
5.函数指针
int add(int x,int y){
return x+y;
}
int (*f)(int x,int y);
f=add;
f(3,5);
四.内存分配
data区 常量池
code区 存放代码 main()等等
栈区 静态自动分配和释放 连续分配
堆区 动态手动分配和释放 不连续分配(链表)
malloc() 手动分配内存 memorry alloc
free() 手动释放内存
int* p=(int*)malloc(sizeof(int)); //手动分配内存
*p=3;
free(p); //手动释放内存