C语言中的第一个代码
int main()
{
printf("Hello World!\n");
return 0;
}
计算机中的单位
bit – 比特位 1 byte - 字节 = 8 bit 1 kb = 1024 byte 1 mb = 1024 kb 1 gb =1024 mb 1 tb = 1024 gb 1 pb = 1024 tb
C语言中的数据类型
(大小单位是字节):
char 字符型(1) short 短整型 (2) int 整型 (4) long 长整型(4) long long 更长的整型 (8) float 单精度浮点型 (4) double 双精度浮点型(8)
在C语言中,如何创建一个变量:
类型+变量的名字 = 值 例如:int a = 20 char b = ‘c’ double d = 1.0 变量:能被改变的量 常量:不能被改变的量
变量的分类: 局部变量:{ }内部定义的 全局变量:{ }外部定义的
注意:当局部变量和全局变量名字冲突的情况下,局部变量优先。
在这里,给大家写一个简单的C语言代码,让大家初识一下C语言变量的使用。 写一个代码,求输入两个整数的和。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d", &a, &b);
sum = a + b;
printf("%d\n", sum);
return 0;
}
变量的作用域和生命周期
作用域:限定变量名字的可用性的代码范围就是这个名字的作用域。通俗来讲就是,一个变量能在哪里使用,哪里就是它的作用域。 局部变量的作用域:就是局部变量所在的局部范围。 全局变量的作用域:整个工程内
生命周期:指的是变量的创建和销毁之间的时间段 局部变量的生命周期:变量进入局部范围那一刻,生命开始;离开局部范围那一刻,生命结束。 全局变量的生命周期:整个main函数内,即整个程序的生命周期。
常量
C语言中的常量分为: 1)字面常量 例如:3 、‘a’、“abcdef” 2)const修饰的常变量 例如:const int num = 10 num就是常变量,具有常属性(不能被改变的属性)。本质还是变量。 3)#define定义的标识符常量 例如:#define MAX 10000 MAX在这里就是define定义的标识符常量,在这里MAX的值就是10000。 4)枚举常量
例如:指的是可以一一列举的常量
> enum Sex
> {
> MALE,
> FEMALE,
> SECRET
> };
字符串+转义字符+注释
字符串就是一串字符 - 用双引号引起的一串字符就是字符串。 注意:字符串在结尾的位置隐藏了一个\0的字符,\0是字符串的结束标志。
在这里给大家一个实例:
#include <stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c' };
char arr3[] = { 'a', 'b', 'c' ,'\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
在这里给大家展示一个求字符串的长度的函数:strlen()
#include <stdio.h>
#include <string.h>
int main()
{
int len = strlen("abc");
printf("%d\n", len);
char arr2[] = { 'a', 'b', 'c' };
printf("%d\n", strlen(arr2));
return 0;
}
注意:字符串的结束标志虽然是\0,但是在用strlen来计算字符串的长度时,是不会把\0当作内容计算的。因为它只是结束的标志,不能算作内容。 但是在用sizeof来计算数组或者字符串大小的时候,\0是要被算作内容的,因为它占据着空间。
转义字符 一个代码让你搞懂什么是转义字符:
int main()
{
printf("c:\code\test.c\n");
return 0;
}
顾名思义,转义字符就是转变这个字符的原有意思。下面给大家介绍一些常见的转义字符。
转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如: \x30 0
注释
注释是用来解释复杂代码的。 两种注释方法: 1)// 2) /* …*/
选择语句
这里就是一个选择语句的示例:
int main()
{
int a = 0;
printf("你是男孩还是女孩?(选择1 or 0):>");
scanf("%d", &a);
if (a == 1)
{
printf("我是男孩子\n");
}
else
{
printf("我是女孩子\n");
}
return 0;
}
循环语句
C语言中实现循环一般有三种语句: 1)while语句 2)for语句 3)do…while语句
这里给大家以while语句为例,演示一个简单的循环语句:
int main()
{
int a = 0;
while (a < 30000)
{
printf("工资:%d\n", a);
a++;
}
if (a == 30000)
{
printf("领到工资30000元\n");
}
return 0;
}
函数
上面我们写了一个求两个整数之和的代码。在这里,我们在此基础上加以修改,借用函数来实现这个功能的实现。 示例如下:
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 0;
int b = 0;
int sum = 0;
printf("请输入两个数:>");
scanf("%d %d", &a, &b);
sum = Add(a, b);
printf("%d\n", sum);
return 0;
}
数组
> 数组是什么?
> 一组相同类型的元素的集合就是数组。
> 例如:int arr[10] = {1,2,3,4,5,6,7,8,9,10};
> char ch[5] = {'a','b','c'};
> 数组是用下标来访问的,数组的下标从0开始。
操作符
算数操作符:+ - * / %
移位操作符:>>(右移) <<(左移)
位操作符:&(按位与) ^(按位异或) |(按位或)
赋值操作符:= += -= *= /= &= ^= |= >>= <<=
单目操作符:
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
关系操作符:
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等
逻辑操作符:
&& 逻辑与
|| 逻辑或
条件操作符:
exp1 ? exp2 : exp3
逗号表达式:
exp1, exp2, exp3, …expN
下标引用、函数调用和结构成员:
[] () . ->
关键字
常见关键字:
auto break case char const continue default do double else
enum extern float for goto if int long register return short
signed sizeof static struct switch typedef union unsigned void
volatile while
在这里介绍几个关键字:
auto 是自动的 - 每个局部变量都是auto修饰的
extern 是用来申明外部符号的
register 寄存器关键字,把数据存到寄存器中
signed 有符号的
unsigned 无符号的
static 静态的
union 联合体(共用体)
void 无(空)
typedef 类型定义,类型重命名
注意:define、include不是关键字,是预处理指令。
static 静态的 1)static修饰局部变量 static修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型) 2)static修饰全局变量 static修饰全局变量,使得全局变量只能在自己所在的源文件内部可以使用,其他源文件不能使用。 全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部连接属性,但是被static修饰之后,就变成了内部连接属性,其他源文件就不能链接到这个静态的全局变量了。 3)static修饰函数 static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用。本质上,static是将函数的外部链接属性变成了内部链接属性!(和static修饰全局变量一样!)
define定义常量和宏
define是一个预处理指令 1)define定义符号 2)define定义宏:
示例:
#define ADD(X,Y) X+Y
int main()
{
printf("%d\n", ADD(2, 3));
return 0;
}
指针
指针是用来存放地址的
int main()
{
int a = 10;
printf("%p\n", &a);
int * pa = &a;
return 0;
}
int main()
{
int a = 10;
int * pa = &a;
*pa = 20;
printf("%d\n", a);
return 0;
}
指针变量的大小
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0;
}
由此可见,指针大小在32位平台是4个字节,64位平台是8个字节。
结构体
结构体可以让C语言创建新的类型出来。什么意思呢?示例如下:
struct Stu
{
char name[20];
int age;
double score;
};
struct Book
{
char name[20];
float price;
char id[30];
};
int main()
{
struct Stu s = { "张三", 20, 85.5 };
printf("1:%s %d %lf\n", s.name, s.age, s.score);
struct Stu * ps = &s;
printf("2:%s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);
printf("3:%s %d %lf\n", ps->name, ps->age, ps->score);
return 0;
}
C语言基础知识暂时告一段落了! 希望这些对大家有帮助。 下次再会!
|