Day 1
接触C的第一步我了解了:
1.
char--字符类型
%d--打印整型
%c--打印字符
%f--打印浮点数字-打小数
%p--以地址形式打印
%x--打印16进制数字
short int--短整型
int--整型
long--长整型
例float weight = 95.6f
如果不加f那么系统会认为95.6是双精度浮点型,所以加上一个f就默认为单精度浮点型。
2.全局变量和局部变量
局部变量的生命周期是进作用域开始到出作用域结束
全局变量的生命周期是整个程序的生命周期
局部变量和全局变量的名字建议不要相同,容易产生误会,产生bug,并且当局部变量和全局变量的名字相同的时候,局部变量优先。
3.scanf函数
当我们需要输入数据时候,我们就可以使用输入函数scanf,例:
#include<stdio.h>
int main()
{
//计算2个数的和
int num1 = 0;
int num2 = 0;
int sum = 0;
//输入数据-使用输入函数scanf
scanf("%d%d", &num1, &num2);//要加取地址符号&
//C语言语法规定,变量要定义在当前代码块的最前面
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
Day 2
1.字面常量
例:
//3
//100
//3.14
2.const-常属性
const修饰的常变量
const int num = 4;
printf("%d\n", num);
num = 8;
printf("%d\n", num)
3.#define 定义的标识符常量
#define MAX 10
int main()
{
int arr[MAX] = {0};
printf("%d\n", MAX);
return 0;
}
4.枚举常量
enum Color
{
RED,
YELLOW,
BLUE,
};
int main()
{
enum Color color = BLUE;//color变量可以改动
color = RED;
printf("%d\n",RED);
//BLUE = 6;//err常量不可改动
return 0;
}
Day3
1.求较大值
#include
int Max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
int main()
{
int num1 = 10;
int num2 = 20;
int max = 0;
max = Max(num1, num2);
printf("max = %d\n", max);
return 0;
}
2.~按二进制位取反
int a = 0;//4个字节,32bit位
int b = ~a;
~--按(二进制)位取反
//0000000000000000000000
1111111111111111111111
原码、反码、补码
/负数在内存中存储的时候,存储的是二进制的补码
1111111111111111111111补
1111111111111111111110反
1000000000000000000001原
printf("%d\n", b);//使用的,打印的是这个数的原码
3.关于++ --等的运算顺序
int b = a ++ ;//后置++,先使用,再++
int b = ++a;//前置++,先++,再使用
int b = a--;//后置--,先使用,再--
int b = --a;//前置--,先--,再使用
4.逻辑符号
真 - 非0
假 - 0
&& -- 逻辑与
|| --逻辑或
5.两个操作符[]与Add
arr[4];//[]-下标引用操作符
int a = 10;
int b = 20;
Add(a, b);
int sum = Add(a, b);//函数调用操作符
6.原码 反码 补码的一些解释
只要是整数,内存中存储的都是二进制的补码
正数--原码,反码,补码相同
负数
原码 -----> 反码 ------> 补 码
直接按照正负 原码的符号位不变 反码+1
写出的二进制序列 其他位按位取反得到
7.
struct--结构体关键字
union- 联合体/共用体
int 定义的变量是有符号的
register int a = 10;//把a定义成寄存器变量
8.typedef- 类型定义-类型重定义
int main()
{
typedef unsigned int u_int;
unsigned int num = 20;
u_int num2 = 20;
return 0;
}
9.static
static 修饰局部变量---局部变量的生命周期长
static 修饰全局变量---改变了变量的作用域-让静态的全局变量只能在自己所在的源文件内部使用
出了源文件就没法再使用了
static修饰函数---改变了函数的链接属性
本来是外部链接属性的,被extern修饰了就变成了内部链接属性
10.宏的定义
//#define MAX 100
//#define MAX 100
//#define 可以定义宏-带参数
int Max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
//宏的定义
#define MAX(X,Y)(X>Y?X:Y)//将MAX(X,Y)替换为了X>Y?
int main()
{
//int a = MAX;
int a = 10;
int b = 20;
//函数
int max = Max(a, b);
printf("max = %d\n", max);
//宏的方式
max = MAX(a, b);
//max = (a>b?a:b);
printf("max = %d\n", max);
return 0;
}
11.指针初步
有一种变量是用来存放地址的-指针变量
*p = 20;//* - 解引用操作符/间接访问操作符
例:
指针初步
int main()
{
char ch = 'w';
char* pc = &ch;
printf("%d\n", sizeof(pc));
//*p = 'a';
//printf("%c\n", ch);
return 0;
}
12.结构体类型
结构体
char int double....
人-名字 身高 年龄 身份证号码
人-书 ---复杂对象
复杂对象-- 结构体
创建一个结构体类型
struct Book
{
char name[20];//C语言程序设计
short price;//55
};
int main()
{
//利用结构体类型-创建一个该类型的结构体变量
struct Book b1 = { "C语言程序设计",55 };
struct Book* pb = &b1;
//利用pb打印出我书名和价格
//. 结构体变量.成员
//-> 结构体指针->成员
printf("%s\n",pb->name);
printf("%d\n",pb->price);
/* printf("%s\n", (*pb).name);
printf("%d\n", (*pb).price);*/
//printf("书名:%s\n", b1.name);
//printf("价格:%d元\n", b1.price);
//b1.price = 15;
//printf("修改后的价格:%d\n", b1.price);
return 0;
}
13.strcpy-string-copy-字符串拷贝-库函数-string.h(初)
struct Book
{
char name[20];//C语言程序设计
short price;//55
};
int main()
{
struct Book b1 = { "C语言程序设计",55 };
strcpy(b1.name, "C++");//strcpy-string-copy-字符串拷贝-库函数-string.h
printf("%s\n", b1.name);
return 0;
}
最后就变成了C++ ,55元。
初识C语言,慢慢摸索慢慢领略C语言的魅力!