初始C语言——1.2

目录

1.函数

2.数组

3.操作符

4.关键字

5. #define定义常量和宏

6.指针


1.函数

int Add(int x, int y) {
	int z = x + y;
	return z;
}
int main() {
	int num1=10, num2=20, sum, a=100, b=200;
	sum = Add(num1,num2);//Add() -- 函数调用操作符
	sum = Add(a, b);
}

函数的特点就是简化代码,代码重复使用


2.数组

int main(){
	//数组如何定义
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
	arr[0];
	printf("%d\n", arr[0]);
	printf("----------\n");
	//通过while循环打印arr数组里面的元素
	int i = 0;
	while (i < 10) {
		printf("%d\n", arr[i]);
		i++;
	}
	return 0;
}

数组的定义:一组相同类型元素的集合。通过下标访问数组里面的元素。[] :下标引用操作符,数组里面的元素都有一个下标,下标是从0开始的


3.操作符

(1)算术操作符

int main(){
	int a1 = 5 / 2;//取商 -- 2
	printf("%d\n",a1);
	int a2 = 5 % 2;//取模 -- 1
	printf("%d\n", a2);
	return 0;
}

 (2)移位操作符

int main() {
	int a = 1;
	//整型1占4个字节-- 32个bit位 -- 00000000000000000000000000000001
	int b = a >> 1;
	printf("%d\n", b);
	printf("%d\n", a);
	return 0;
}

 包含“左移 -- <<”、“右移 -- >>”

注意:移位是移二进制位

(3)按位操作符

int main() {
	int a = 3;
	int b = 5;
	int c = a & b;
	printf("%d\n", c);
	int d = a | b;
	printf("%d\n", d);
	int e = a ^ b;
	printf("%d\n", e);
	return 0;
}

 按位是按二进制位。符号包括“& -- 按位与”、“| -- 按位或(按<2进制>位取反)”、“^ -- 按位异或”。

&:取二进制位相交的数。|:取二进制位不相交的数。^:对应的二进制位相同,则为0;对应的二进制位相异,则为1。

(4)赋值操作符

int main() {
	int a = 10;
	a = 20;
	a &= 2;
	return 0;
}

其中:“ = ” -- 赋值,== : 判断相等。另外还有复合赋值符,比如:+=、-=、*=、/=、&=、|=、^=

(5)单目运算符:只对一个变量进行操作

int main(){
	int a1 = 1;
	int b1 = a1++;//后置++,先使用,再++。“a++”只对a一个变量进行了操作
	printf("a1 = %d b1 = %d\n ", a1, b1);//a=2,b=1
	int a2 = 1;
	int b2 = ++a2;//后置++,先++,再使用。
	printf("a2 = %d b2 = %d\n ", a2, b2);//a=2,b=2
	int c = 0;//4字节 -- 32bit位
	int d = ~c;//c是有符号的整型 --- ~按(2进制)位取反
	printf("%d\n",d);//使用的、打印的是这个数的原码 -- -1
	
	return 0;
}

只要是整数,在内存中存储的都是二进制的补码。负数在内存中存储的时候,存储的是二进制的补码。正数的原码、反码、补码 相同。

原码->补码过程:原码符号位不变,其他位按位取反得到反码。反码加1得到补码

例如:1000000000000000000000000000000010 --- -2的原码

           11111111111111111111111111111101 -- 反码 -- 符号位不变,其他位按位取反

           11111111111111111111111111111110 -- 补码 -- 反码加一

补码->原码过程:补码减一得到反码。反码符号位不变,其他位按位取反得到原码

例如:1(符号位:1表示负数,0表示正数)1111111111111111111111111111111 -- 补码 // -1的补码

           11111111111111111111111111111110 -- 这是反码 -- 补码减一

           10000000000000000000000000000001 -- 这是原码 -- 反码按位取反

(6)双目运算符:对两个变量进行操作

int main(){
	int a = 1, b = 2, c;
	c = a + b;//“c = a + b”则是对a, b两个变量进行了操作
	return 0;
}

(7)三目运算符(条件操作符):对三个变量进行操作

        代码符号:? --- 代码表达式:exp1 ? exp2 : exp3

int main(){
	//例子:
	double money = 100.39;
	double price = 66.96;
	printf("买不买呢:");
	printf("%s\n", price<=money ? "买了" : "不买");
	//price<=money ? "买了":"不买" = if (price<=money)
										printf("买了");
									else
										printf("不买");
	return 0;
}

(8)关系操作符 -- 代码符号:> 、>= 、< 、<= 、!=(用于测试“不相等”) 、 ==(用于测试“相等”)

(9)逻辑操作符 -- 代码符号:&&(逻辑与)、||(逻辑或)

int main() {
	//真 -- 非0,假 -- 0
	int a = 0;
	int b = 5;
	int c = a & b;
	printf("%d\n", c);// 0
	int d = a || b;
	printf("%d\n", d);// 1
	return 0;
} 

逻辑与:有一个假即为假,两个为真才为真。逻辑或:有一个真即为真,两个为假才为假


4.关键字

包括:auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、goto、if、while、long、int、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile*

typedef:类型重定义 -- 类型重命名

int main() {
	typedef unsigned int u_int;
	unsigned int num1 = -20;
	u_int num2 = -20;
	printf("num1 = %d num2 = %d\n", num1, num2);

	return 0;
}

viod -- 无类型

void test(){  
	int a = 1;
	a++;
	printf("a = %d\n", a);
}
int main() {
	int i = 0;
	while (i < 5) {
		test();
		i++;
	}
	return  0;
}

static:静态 -- 作用1:修饰局部变量,是局部变量生命周期变长。

void test(){
	static int a = 1; //a是一个静态局部变量
	a++;
	printf("a = %d\n", a);
}
int main() {
	int i = 0;
	while (i < 5) {
		test();
		i++;
	}
	return  0;
}

static:静态 -- 作用2:修饰全局变量,使变量的作用域发生改变 -- 让静态的全局变量只能在当前变量源文件内使用

static int g_val = 2022; //全局变量
int main(){
	//extern -- 声明外部变量
	extern int g_val;
	printf("%d\n", g_val);
	return 0;
}

static:静态 -- 作用3:修饰函数,改变了函数的链接属性(普通的函数有外部链接属性) -- static是函数变成内部函数 --static修饰的函数只能在当前变量源文件内使用

static int Add(int x,int y) { //定义Add函数
	int z = x + y;
	return z;
}
int main() {
	int a = 10;
	int b = 20;
	extern int Add(int,int); //声明外部函数
	int sum = Add(a, b);
	printf("sum = %d\n", sum);
	return 0;
}

5. #define定义常量和宏

(1)定义常量

#define MAX 100
int main() {
	int a = MAX;
	printf("%d\n", a);
	return 0;
}

(2)#define定义宏 -- 带参数

#define MAX(X,Y) (X>Y ? X:Y)
int main() {
	int a = 10;
	int b = 20;
	int max;
	max = MAX(a, b);// --> max = (a>b ? a:b)
	printf("MAX = %d\n", max);
	return 0;
}

6.指针

int main() {
	int a = 10;// a --> 4个字节
	printf("%p\n", &a);//& -->取地址符号
	//指针变量 -- 用来存放地址的变量
	int* p = &a;//取地址 
	printf("%p\n", p);
	*p = 20;// *:解引用操作符
	printf("a = %d\n", a);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值