初识C语言
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
-
什么是C语言
-
第一个C语言程序
-
数据类型
-
变量、常量
-
字符串+转义字符+注释
-
选择语句
-
循环语句
-
函数
-
数组
-
操作符
-
常见关键字
-
define 定义常量和宏
-
指针
-
结构体
前言
编程是一门实践性的学科绝对不是理论。如果不动手“敲”代码的话永远都学不会编程。很多问题只有在“敲代码”的时候才能发现才会有更加深刻的体会、领悟和理解。而不是靠死记硬背书中的注意点那样真的很痛苦。我在学习编程的时候从来都不会刻意记忆什么注意点这些知识点都是在不停“敲代码”的过程中自然而然地融入我的身体中的。
一、什么是C语言
二、第一个C语言程序
#include<stdio.h>
//主函数是程序的入口
//主函数有且仅有一个
//在一个工程中有且只有一个主函数
int main()
{
printf("Hello world\n");
return 0;
}
三、数据类型
char 字符数据类型 1字节
short 短整形 2字节
int 整形 4字节
long 长整形 4字节
long long 更长的整形 8字节
float 单精度浮点数 4字节
double 双精度浮点数 8字节
如何求解上述数据类型所占多大空间
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
程序结果如下
注意1、C语言标准规定sizeof(long)>=sizeof(int)
2、在64平台下是返回的是64位的整形此时需要使用%lld
3、vs中新建的源文件都是拷贝newc++file.cpp文件的
四、变量、常量
在C语言中不变的量用常量来表示变的量用变量来表示。
变量的分类
全局变量定义在大括号的外部
局部变量定义在大括号的内部
#include<stdio.h>
int a = 1000;//全局变量-定义在大括号的外部
int main()
{
int a = 100;//局部变量-定义在大括号的内部
//局部变量的名字和全局变量的名字冲突的情况下局部优先
printf("a=%d\n", a);
return 0;
}
变量的使用
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;//存放变量相加的结果
//输入
scanf("%d %d", &num1, &num2);
//相加
sum=num1 + num2;
//输出
printf("%d\n", sum);
return 0;
}
变量的作用域和生命周期
作用域一段程序中所用到的名字并不是总是有效、可见的。而限定这个名字的可用性的代码范围就是这个名字的作用域。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
常量
1、字面常量
20;
3.14;
'a';//字符常量
"abcde";//字符串常量int a = 10;
char ch = 'w';2、 const修饰常变量
const是一个C语言的关键字
const是常属性的意识
const int num = 10;3、#define定义的标识符常量
int a = M;
int arr[M] = { 0 };4、枚举常量
enum Color
{
RED,//0
GREEN,//1
BLUE//2
};
五、字符串+转义字符+注释
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = { "abc" };
char arr2[] = { 'a','b','c' };//没有'\0'则会出现乱码
printf("%s\n", arr1);
printf("%s\n", arr2);
//strlen-库函数
//求字符串长度
//计算的是'\0'之前出现的字符的个数
printf("%d\n", strlen(arr1));
return 0;
}
程序结果如下
转义字符
转义字符 释义
\? 在书写连续多个问号时使用防止他们被解析成三字母词\' 用于表示字符常量 '\“ 用于表示一个字符串内部的双引号\\ 用于表示一个反斜杠防止它被解释为一个转义序列符。\a 警告字符蜂鸣\b 退格符\f 进纸符\n 换行\r 回车\t 水平制表符\v 垂直制表符\ddd ddd 表示 1~3 个八进制的数字。 如 \130 X\xdd dd 表示 2 个十六进制数字。 如 \x30 0
注释
六、选择语句
#include <stdio.h>
int main()
{
int coding = 0;
printf("你会去敲代码吗选择1 or 0:>");
scanf("%d", &coding);
if (coding == 1)
printf("坚持你会有好offer\n");
else
printf("放弃回家卖红薯\n");
return 0;
}
七、循环语句
//while循环的实例
#include <stdio.h>
int main()
{
printf("加入比特\n");
int line = 0;
while(line<=20000){
line++;
printf("我要继续努力敲代码\n");
}
if(line>20000)
printf("好offer\n");
return 0;
}
八、函数
#include<stdio.h>
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("%d\n", sum);
return 0;
}
九、数组
#include<stdio.h>
int main()
{
//数组-能够存放一组相同类型的元素
int i = 0;
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (i = 0; i < 10; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
//C99中引入加长数组
}
十、操作符
算术操作符 + - * / %
移位操作符 >> <<
位操作符 & ^ |
赋值操作符 = += -= *= /= &= ^= |= >>= <<=
单目操作符
! 逻辑反操作- 负值+ 正值& 取地址sizeof 操作数的类型长度以字节为单位~ 对一个数的二进制按位取反-- 前置、后置 --++ 前置、后置 ++* 间接访问操作符 ( 解引用操作符 )( 类型 ) 强制类型转换
关系操作符
>>=<<=!= 用于测试 “ 不相等 ”== 用于测试 “ 相等 ”
逻辑操作符
&& 逻辑与|| 逻辑或
条件操作符
exp1 ? exp2 : exp3
逗号表达式
exp1 , exp2 , exp3……expN
下标引用、函数调用和结构成员
[] () . ->
十一、常见关键字
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
//观察num1和num2,这两个变量的类型是一样的
unsigned int num1 = 0;
uint_32 num2 = 0;
return 0;
}
#include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
return 0;
}
#include <stdio.h>
void test()
{
//static修饰局部变量
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
return 0;
}
#include<stdio.h>
int Add(int x, int y)
{
return c + y;
}
//Test.c
int main()
{
printf("%d\n", Add(2, 3));
return 0;
}
static int Add(int x, int y)
{
return c + y;
}
//test.c
int main()
{
printf("%d\n", Add(2, 3));
return 0;
}
结论
十二、define 定义常量和宏
#include <stdio.h>
//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0;
}
十三、指针
内存
#include<stdio.h>
//内存单元都有编号这个编号就是地址我们把这个地址也叫指针
int main()
{
int a = 10;
int* pa = &a;//pa是用来存放地址的所以我们把pa叫做指针变量
*pa = 100;
printf("%d", a);
char ch = 'w';
char* pc = &ch;//&取地址操作符
*pc='q';//解引用操作符它的意思就是通过pc中存放的地址找到pc指向的内容。
printf("%c", ch);
return 0;
}
#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位即4个字节
//64位平台下地址是64个bit位即8个字节
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}
十四、结构体
结构体是C语言中特别重要的知识点结构体使得C语言有能力描述复杂类型。
#include<stdio.h>
//结构体
typedef struct Stu
{
char name[20];
int age;
char sex[5];
char id[20];
}Stu;
void Print(Stu* ps)
{
//printf("%s %d %s %s\n",(*ps).name,(*ps).age,(*ps).sex,(*ps).id);
printf("%s %d %s %s\n", ps->name, ps->age, ps->sex, ps->id);
//->结构成员访问操作符
//结构体指针->结构体成员
}
int main()
{
//结构体变量
Stu s1 = { "张三",18,"男","2021060701" };
Stu s2 = { "如花",45,"女","2021060702" };
Stu s3 = { 0 };
scanf("%s %d %s %s", &s1.name, &s1.age, s1.sex, s1.id);
printf("%s %d %s %s\n",s1.name,s1.age,s1.sex,s1.id);
//.结构成员访问操作符
//结构体变量.结构体成员
return 0;
}