c语言编译器
gcc、g++ gcc是用来编译c语言的 g++是用来编译c++的
c语言的数据类型
基本数据类型
char 它的长度是1字节
short 它的长度是2字节
int 它的长度是4字节
long 它的长度是4字节
float 它的长度是4字节
double 它的长度是8字节
非基本类型
结构体
数组
指针
结构体
定义
定义结构体的时候,一般用char数组
数组作为成员属性,元素个数写在后面,写在前面会报错
struct Student {
char name[20];
};
Java中是这样写,但是C语言中这样写会报错(高版本的不会报错)
struct Student {
char[] name;
};
struct Student {
char name[20];
};
Java中是这样写,但是C语言中这样写会报错
struct Student {
char[] name;
};
函数定义
定义(与Java一样)
return_type function_name( parameter list )
{
body of the function
}
声明与定义分开(C++中类的声明与定义分开,与这个原理一样)
return_type function_name( parameter list );
函数的使用
(什么场景需要这样做?比如:一个函数调用在它后面定义的函数就需要这样做。因为C语言编译是按照文件顺序编译并查找符号的。)
// 如果没有这句,编译时会报错
int add();
int _tmain(int argc, _TCHAR* argv[])
{
add();
return 0;
}
int add() {
return 1 + 2;
}
函数参数可以写默认值(与Java不同)
1、如果某个位置有了默认值,这个位置之后的所有值都得有默认参数
2、声明与实现只能一个地方有,不然运行时不知道取哪个值
int add(int a = 10) {
return 1 + 2;
}
-------------------------------------------------
void add(int a, int b = 10, int c)
{
}
-------------------------------------------------
void add(int a, int b = 20);
void add(int a, int b = 10)
{
cout << a + b << endl;
}
打印
C语言一般用printf函数,c++一般用cout。但是cout没有printf好用
#include int main() { printf("ziyan"); return 0; }
加n与不加n有什么区别
printf("%s", stu1.name);
printf("%sn", stu1.name);
格式化参数
%d 十进制有符号整数(常用) %u 十进制无符号整数(常用) %f 浮点数 %s 字符串(常用) %c 单个字符(常用) %p 指针的值(常用) %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数(常用,打印指针一般会用到这个) %o 无符号以八进制表示的整数 %g 把输出的值按照%e或者%f类型中输出长度较小的方式输出 %p 输出地址符 %lu 32位无符号整数 %llu 64位无符号整数 可以在“%”和字母之间插进数字表示最大场宽 %3d表示输出3位整型数,不够3位右对齐
字符串
c语言中没有字符串只有char数组 char[] a = "12313 " 这样定义字符串 c语言会根据0进行结束 如果字符串中读取到了0那就表名字符串读取结束 比如char[] a = "12 313" 这样只会打印12 后面的都不会打印了
指针的创建
int a = 10; int* p = &a; int *p = &a; int** p = &p;
内存图
指针的长度 32位系统4字节 64位系统8字节
int **** a不管有多少个*长度还是4或者8
指针赋值
int a = 10; int* p = &a; int* pp = (int *)10;
指针的操作符
& 取地址符 * 两个作用:定义指针、解引用
chara = (char)12;现在有这样一个指针变量 然后如果a+1这样写结果就是2 指针在进行加减的时候会自动删除一个* 也就是长这样char a 这样之后会去char的长度进行加减 如果是char** a的话进行a+1操作就是5 这样就会去掉一个而它就成char这样还是有* 有就是指针的长度就是4+1(64位就是8+1) 然后如果使用a给别的变量赋值的话 它会把*a的值也就是12当做内存地址 然后去这个内存地址中找他的数据把这个数据进行赋值 这是指针的几个坑



