1.C的基本数据类型
java基本数据类型 C基本数据类型
基本数据类型所占字节数:
java基本数据类型 | C基本数据类型 |
---|---|
boolean:1 | -- |
byte:1 | -- |
char:2 | char:1 |
short:2 | short:2 |
int:4 | int:4 |
long:8 | long:4 |
float:4 | float:4 |
double:8 | double:8 |
-- | singed(有符号):有符号数,最高位表示符号位,可以表示负数。 |
-- | unsinged(无符号):无符号数,最高位表示数值位,不可以表示负数。 |
-- | void(): |
C没有boolean byte C用 0和!0表示true和false
java一个字节所表示的数值大小
java字节表示数值大小
C一个字节所表示的数值大小
C一个字节所表示的数值大小
#include<stdio.h>
#include<stdlib.h>
/**
char, int, float, double, long, short, signed, unsigned, void
signed unsigned 有符号 无符号 只能用来修饰整形变量 char int short long 默认有符号
sizeof(int)
*/
main(){
printf("char占%d个字节\n", sizeof(char));
printf("int占%d个字节\n", sizeof(int));
printf("short占%d个字节\n", sizeof(short));
printf("float占%d个字节\n", sizeof(float));
printf("long占%d个字节\n", sizeof(long));
printf("double占%d个字节\n", sizeof(double));
unsigned char c = 128;
printf("c = %d\n",c);
system("pause");
}
image.png
2.C的指针
当声明一个变量,即会在内存中开辟出一段连续的内存空间。
#include<stdio.h>
#include<stdlib.h>
main(){
int i = 123;
//一般计算机中用16进制数来表示一个内存地址
printf("%#x\n",&i);
//int* int类型的指针变量 pointer指针 指针变量只能用来保存内存地址
//用取地址符&i 把变量i的地址取出来 用指针变量pointer 保存了起来
//此时我们可以说 指针pointer指向了 i的地址
//int *pointer ; int * pointer
printf("pointer的值 = %#x\n",pointer);
printf("pointer的内存地址 = %#x\n",&pointer);
printf("*pointer的值%d\n",*pointer);
*pointer = 456;
printf("i的值是%d\n",i);
system("pause");
}
image.png
image.png
3.C语言野指针
main(){
//野指针 指针使用之前要初始化 赋给它一个自己程序中声明的变量的地址
//指针使用的时候要注意 int类型的指针要指向int类型的内存地址, double类型的指针要指向double类型的地址 ....
//如果乱指会出bug
int i;
double d = 3.1415;
int* pointer = &d;
printf("pointer的值=%#x\n",pointer);
printf("*pointer = %d\n",*pointer);
system("pause");
}
4.C语言结构体
C的机构体类似于Java的类,struct来声明C的结构体
#include<stdio.h>
#include<stdlib.h>
/**
c结构体 类似java的class struct来声明c的结构体
结构体的大小大于等于结构体中每一变量的占字节数的和
结构体的大小是最大的那个变量所占字节数的整数倍
C结构体中不能定义函数
函数指针的定义 返回值(*函数指针变量名字)(返回值);
-> 间接引用运算符
*/
void study(){
printf("good good study!\n");
}
//struct Student{
typedef struct Student{
int age; //8
int score; // 4
char sex; //1
void(*studypointer)();
//};
} stud;
main(){
//struct Student = {18,100,'f'};
stud stu = {18,100,'f'};
stu.studypointer = &study;
stu.studypointer();
struct Student* stuPointer = &stu;
printf("*stuPointer.age = %d\n",(*stuPointer).age);
(*stuPointer).sex ='m';
printf("stu.sex = %c\n",stu.sex);
printf("stuPointer->age = %d",stuPointer->age);
//printf("stu.age = %hd\n",stu.age);
//printf("stu.score = %d\n",stu.score);
//printf("stu.sex = %c\n",stu.sex);
// printf("结构体student占%d个字节\n",sizeof(stu));
system("pause");
}
image.png
5.C语言枚举
#include<stdio.h>
#include<stdlib.h>
enum weekday{
MON=9, TUE, WEND,THUR,FRI,SAT,SUN
};
main(){
enum weekday day = MONe;
printf("day= %d",day);
system("pause");
}
image.png
6.C语言自定义类型
#include<stdio.h>
#include<stdlib.h>
typedef int i;
main(){
i j = 123;
printf("j = %d\n",j);
system("pause");
}
image.png
网友评论