C语言的基础知识
数据类型
变量、常量
字符串+转义字符+注释
条件语句
函数
数组
操作符
指针
结构体
数据类型
char//字符数据类型
short//短整型
int//整形
long//长整型
long long//更长的整形
float//单精度浮点数
double //双精度浮点数
每种类型的大小是多少?
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));
printf("%d\n", sizeof(long double));
return 0;
}
运行结果
变量、常量
定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
变量的分类
局部变量:
1.局部变量的作用域是变量所在的局部范围。
2.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
全局变量
1.全局变量的作用域是整个工程。
2.全局变量的生命周期是:整个程序的生命周期。
当局部变量和全局变量同名的时候,局部变量优先使用
常量
字面常量
const 修饰的常变量
#define 定义的标识符常量
枚举常量enum
#include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
3.14;//字面常量
1000;//字面常量
const float pai = 3.14f; //const 修饰的常量
pai = 5.14;//ok?
#define MAX 100 //#define的标识符常量
return 0;
}
字符串+转义字符+注释
字符串
"hello bit.\n"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
转义字符
//问题1:在屏幕上打印一个单引号’,怎么做?
//问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
#include <stdio.h>
int main()
{
printf("%c\n", '\'');
printf("%s\n", "\"");
return 0;
}
注释
注释有两种风格:
缺陷:不能嵌套注释
可以注释一行也可以注释多行
条件语句
选择语句
if语句的一般形式如下:
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age>=18 && age<30)
{
printf("青年\n");
}
else if(age>=30 && age<50)
{
printf("中年\n");
}
else if(age>=50 && age<80)
{
printf("老年\n");
}
else
{
printf("神\n");
}
}
switch语句也是一种分支语句。 常常用于多分支的情况。
比如:
case1,输出星期一
case2,输出星期二
case3,输出星期三
case4,输出星期四
case5,输出星期五
case6,输出星期六
case7,输出星期七
循环语句
C语言中如何实现循环呢?
while语句
for语句
do … while语句
//while 语法结构
while(表达式)
循环语句;
for(表达式1;表达式2;表达式3)
循环语句;
do
循环语句;
while(表达式);
函数
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &a, &b);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
上述代码,写成函数如下:
#include <stdio.h>
int Add(int x, int y)
{
int z = x+y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &a, &b);
sum = Add(x, y);
printf("sum = %d\n", sum);
return 0;
}
函数的特点就是简化代码,代码复用。
数组
数组定义
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
数组的使用
#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;
}
操作符
指针
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
指针:保存地址。
那地址如何存储,需要定义指针变量。
int num = 10;
int *p;//p为一个整形指针变量
p = #
指针变量的大小
指针大小:32位 四个字节; 64位 八个字节。不论类型
#include <stdio.h>
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语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用结构体来描述了。
例如:
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
结构体的初始化:
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id); //->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps->id);