初始c语言
下列是C语言的一些基础
counst,#define,enum,sizeof,还有一些操作符。
const修饰的常变量。
const int num = 4;
//num = 99;//无法修改,const修饰的变量称为常变量,相当于是一个常量。
字面常量
比如,3、345等数字都是字面常量。
2.#define 定义的标识符常量(宏定义)
#define MAX 10
int main()
{
printf("%d",MAX);//10
}
#define MAX 10的作用是告诉编译器 编译前做字符替代工作,例如#define MAX 10,就是把下面程序中的字符MAX用10替代,替代完,再做编译。
3.枚举关键-enum
枚举-一一列举
性别:男,女,保密
三原色:红、黄、蓝
星期:1,2,3,4,5,6,7
1 enum Color
2 {
3 RED,//0
4 YELLOW,//1
5 GREEN//2
6 };
7
8 int main()
9 {
10 printf("%d\n", RED);//0
11 printf("%d\n", YELLOW);//1
12 printf("%d\n", GREEN);//2
13 enum Color color = GREEN;
14 color = YELLOW;
15 //RED = 6; //err
16 return 0;
17 }
4.sizeof的使用
sizeof 计算的是变量/类型所占空间的大小,单位是字节
#include <stdio.h>
#include <string.h>
int main()
{
int arr[5] = {0};//5个整型元素的数组
int sz = 0;
//5*sizeof(int) = 20
printf("%d\n", sizeof(arr));
//计算数组的元素个数
//个数 = 数组总大小/每个元素的大小
sz = sizeof(arr)/sizeof(arr[0]);
printf("sz = %d\n", sz);//5
//int a = 10;
//printf("%d\n", sizeof(a));//4
//printf("%d\n", sizeof(int));//4
//printf("%d\n", sizeof a);//4
//printf("%d\n", sizeof int);//error
return 0;
}
5.C语言的操作符
分为:算术操作符、移位操作符、位操作符、赋值、单目操作符、关系操作符、逻辑操作符、条件操作符等,在这里简单介绍以下几种操作符。
①,算术操作符:+、- 、 、/(除法)、%(求余)。*
+、-、*这三种操作符类似数学中的加、减、乘。
/:除法,例如
1 include<stdio.h>
2 int main()
3 {
4 int a=5;
5 int b=2;
6 int c=a/b;// 5/2=2,大于整数部分去掉
7 printf("%d",&c);//2
8 return 0;
9 }
%求余,例如
C 语言中的取余运算只能针对整数,也就是说, % 的两边都必须是整数,不能出现小数,否则编译器会报错。
include<stdio.h>
int main()
{
int a=5;
int b=2;
int c=a%b;// 5%2=1,求余数
printf("%d",&c);//1
return 0;
}
②移位操作符:简单的把一个值的(二进制)位向左或向右移动。
左位移操作符<< :在左移位中,最左边的被丢弃,右边多出的空位由0补齐。
右位移操作符>>:从左边移入新位时,有逻辑移位(左边移入新位全用0补充)、算术移位(左边移入的位由原先该值的符号位决定,符号位位1则移入的位均为1,符号位为0则移入的位均为0)。
③(二进制)位操作符:
按位与&:两个位数都是1,则为1,否则为0
按位或|,两个位数都是0,则为0,否则为1
按位异或^,两个位上的数不同结果为1,否则为0。
④赋值操作符:
=、+=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(求余赋值)、 <<=(左移赋值)、>>=(右移赋值)、&=(按位与赋值)、|=(按位或赋值)等。
· =:简单的赋值运算符,把右边操作数的值赋给左边操作数。
a+=b,相当于a=a+b;
a-=b,相当于a=a-b;
a/=b,相当于a=a/b;
a%=b,相当于a=a%b;
a<<=b,相当于a=a<<b;
a>>=b,相当于a=a>>b;
a&=b,相当于a=a&b;
a|=b,相当于a=a|b;
⑤单目操作符
! (逻辑反操作),- (负值),+ (正值),& (取地址), sizeof (以字节为单位的操作数的类型长度), ~ (对一个数的二进制按位取反), – (前置、后置–),++ (前置、后置++),* (间接访问符即解引用操作符), (类型) (强制类型转换) 。
!:逻辑反操作表示可以得到一个与操作数逻辑上相反的数。
比如:a为真,!a就为假(0)。
int a=100;
int b=!a;//b=0;
– (前置、后置–),++ (前置、后置++):
int a=10;
int b = a++;//后置++,先使用,再++
printf("b=%d",b);//b=10
int c=10;
int d = ++c;//前置++,先++,再使用
printf("d=%d",d);//d=11
int q=10;
int w = q--;//后置--,先使用,再--
printf("w=%d",w);//w=10
int r=10;
int t= --r;//前置--,先--,再使用
printf("t=%d",t);//t=9
6,static关键字
static 修饰局部变量
局部变量的生命周期变长
static 修饰全局变量
改变了变量的作用域 - 让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法再使用了
static修饰函数
也是改变了函数的作用域-不准确,static修饰函数改变了函数的链接属性,外部链接属性 -> 内部链接属性
7,声明外部函数extern
例如
extern int Add(int, int);