初识C语言3
补充知识点
编写函数求最大值
#include <stdio.h>
#include <string.h>
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("%d\n",max);
return 0;
}
原码,反码,补码
int main() {
int a = 0;
int b = ~a;
printf("%d\n", b);
return 0;
}
单目操作符 ++ –
int main() {
int a = 10;
int b = a++;
printf("a=%d\nb=%d\n",a,b);
int c = 10;
int d = ++c;
printf("c=%d\nd=%d\n", c, d);
return 0;
}
* 间接访问操作符(解引用操作符)
(类型) 前置类型转换
int main() {
int a =(int)3.14;
printf("%d\n", a);
return 0;
}
关系操作符
.>,>=,<,<=,!=,==
逻辑操作符
&&,逻辑与,两个都要是真 ||,逻辑或,其中一个为真,是真,都假才为假
int main() {
int a = 3;
int b = 5;
int c = a && b;
printf("%d\n", c);
return 0;
}
条件操作符
Exp1?exp2:exp3;
int main() {
int a = 10;
int b = 20;
int max = 0;
max = (a > b ? a : b);
if (a > b) {
max = a;
}
else {
max = b;
}
return 0;
}
逗号表达式,
Exp1,exp2,exp3,exp4…//逗号也可以隔开表达式
下标 下标引用操作符
int main() {
int arr[10] = { 0 };
arr[4];
return 0;
}
函数调用操作符
int Add(int x, int y) {
int z = x + y;
return z;
}
int main() {
int a = 10;
int b = 20;
int sum = Add(a, b);
return 0;
}
.操作符 ->操作符
常见的关键字
规定,变量名不可以和关键字冲突 Auto自动 break退出 switch case char const常量 continue do Double Else enum枚举 extern引用 float for int long default register寄存器 Return short signed sizeof static struct结构体 typedef union联合体/共用体 void无 volatile c语言段位 while
int main() {
auto int a = 10;
register int a = 10;
unsigned int num = 1;
return 0;
}
int main() {
typedef unsigned int u_int;
unsigned int num = 20;
u_int num2 = 20;
return 0;
}
test.c原文件
void test() {
static int a = 1;
a++;
printf("a=%d\n", a);
}
int main() {
extern int g_val;
printf("g_vale = %d\n", g_val);
int i = 0;
while (i < 5) {
test();
i++;
}
return 0;
}
Add.c原文件
static int g_val = 2020;
Add.c
extern int Add(int, int);
int main() {
int a = 10;
int b = 20;
int sum = Add(a, b);
printf("sum = %d\n", sum);
return 0;
}
被static修饰后,外部文件不可以访问 普通函数是具有外部链接属性的 Static修饰函数,改变了函数的链接属性 外部链接属性则会变成内部链接属性
计算机 存储数据
访问速度依次递减,空间依次递增 寄存器 高速缓存 硬盘 内存
CPU – 中央处理器 从内存拿数据到CPU去计算
#define定义常量和宏
int Max(int x, int y) {
if (x > y) {
return x;
}
else {
return y;
}
}
#define MAX(X,Y) (X>Y?X:Y)
int main() {
int a = 10;
int b = 20;
int max = MAX(a, b);
printf("max = %d\n", max);
max = MAX(a, b);
printf("max = %d", max);
return 0;
}
指针
内存
int main() {
int a = 10;
printf("%p\n",&a);
int* p = &a;
printf("%p\n", &a);
*p = 20;
printf("a=%d\n", a);
return 0;
}
int main() {
char ch = 'w';
char* pc = &ch;
*pc = 'a';
printf("%c", ch);
return 0;
}
指针的大小:指针在32位平台是4个字节,在64位平台是8个字节。
回顾
电脑 8G – 内存,500G – 硬盘
int main() {
int a = 10;
int* p = &a;
*p = 20;
printf("%d\n", a);
double d = 3.14;
double* pd = &d;
printf("%d\n", sizeof(pd));
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(double*));
return 0;
}
结构体
复杂对象:人 , 书 … 人 – 名字,身高,年龄,身份证号码… 书 – 作者,出版社,定价,书号… 结构体是自己出来的一种类型
struct Book {
char name[20];
short price;
};
int main() {
struct Book b1 = { "c语言程序设计",55 };
struct Book* pb = &b1;
printf("%s\n", pb->name);
printf("%d\n", pb->price);
strcpy(b1.name,"C++");
return 0;
}
|