大学学的C现在已经忘得差不多了,最近研究JNI需要用到C方面的知识,所以的重新温习下C的知识
C的基本类型
JAVA C
byte 1 xx
boolean 1 xx(0 false 非0 true)
signed xx -128~127
unsigned xx 0~255
void xx 代表任意类型
char 2 1
short 2 2
int 4 4
float 4 4
long 8 4
计算类型的长度sizeof
占位符:
char %c
int %d
long %ld
float %f
double %lf
十六进制 %x
八进制 %o
字符串 %s
注意;默认保留小数点后六位,不同的类型需要不同的展位符输出,不然会损失精度
输入输出:
printf(“a=%.4f”,a);保留4位
printf(“a=%.10f”,a);保留10位
数组定义:
char[] a = {‘A’,’B’}; xx []需要放后面
char a[] = {‘A’,’B’};
printf(“内存地址%#x”,&a);
char* text = “I love c”;
printf(“字符串%s”,text);
scanf(“输入类型”,地址符);
int i;
sacnf(“%d”,&i);
char arr[5];
sacnf(“%s”,&arr);
printf(“%s”,&arr);
注意:
数组是一块连续的内存空间,/0代表结束
char ar[] = {‘a’,’b’,’c’,’\0’}
char str[6] = {‘c’,’h’,’i’,’n’,’a’};
char str [10] = “china”;
char *str = “china”;
指针
指针就是内存地址 *p:取p对应的地址的值
int i = 10;
int* p;//定义一个int类型的一级指针变量p
p = &i;
printf("%d",*p);// 取出p的值
指针与指针变量:
指针就是地址,地址就是指针,地址是内存单元的编号
指针变量是存放地址的变量
指针的作用:
1.访问硬件(opengl绘图)
2.快速传递数据
3.表示复杂的数据结构(结构体)
4.方便处理字符串
5.有助于理解面向对象
指针改变值
void switch(int* a,int*b) {
int temp = *a ;
*a = *b;
*b = temp;
}
int main() {
int a = 100;
int b = 200;
swap(&a,&b);
return 0;
}