C语言基础知识
第一章:C语言基础知识
第一个程序Hello World
C语言是一种通用、过程式的计算机编程语言,由Dennis Ritchie在1972年开发。第一个C程序通常是打印"Hello, World!",这是一个简单但完整的程序,展示了C语言的基本结构。
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
代码解析:
#include <stdio.h> - 包含标准输入输出头文件
int main() - 程序入口函数
printf() - 输出函数
return 0; - 程序正常结束
学习提示
每个C程序都必须有一个main函数作为程序入口点。printf函数用于向控制台输出文本,"\n"表示换行符。
练习题
选择题
在C语言中,程序的入口函数是?
A start()
B main()
C begin()
D init()
填空题
用于输出文本到控制台的函数是______。
编程题
编写一个C程序,输出"欢迎学习C语言!"。
基本数据类型
C语言提供了几种基本数据类型,每种类型有特定内存占用和取值范围:
| 类型 | 大小(字节) | 取值范围 | 示例 |
| int | 4 | -2,147,483,648 到 2,147,483,647 | int age = 25; |
| char | 1 | -128 到 127 | char grade = 'A'; |
| float | 4 | ±3.4e-38 到 ±3.4e38 | float pi = 3.14; |
| double | 8 | ±1.7e-308 到 ±1.7e308 | double distance = 9.46e15; |
类型修饰符:
signed - 有符号数(默认)
unsigned - 无符号数,范围从0开始
short - 短整型(通常2字节)
long - 长整型(通常4或8字节)
int age = 30;
float temperature = 36.5f;
double pi = 3.1415926535;
char initial = 'J';
unsigned long population = 7800000000;
练习题
选择题
以下哪个数据类型可以存储最大的整数值?
A int
B unsigned long
C float
D double
填空题
在32位系统中,int类型通常占用______字节。
计算题
计算 sizeof(short) + sizeof(float) 的值
变量与常量
变量是程序中存储数据的基本单元,常量是不可更改的值。
变量类型:
- 自动变量:函数内部定义,生命周期随函数调用结束
- 静态变量:static修饰,生命周期持续到程序结束
- 全局变量:函数外部定义,整个程序可见
- 动态变量:malloc分配,需手动释放
- 局部变量:函数内部定义,仅函数内可见
- 函数参数:函数调用时传递的值
- 非局部静态变量:文件作用域的静态变量
int globalVar = 10;
const float PI = 3.14159f;
void example() {
int autoVar = 5;
static int staticVar;
int *dynamicVar = (int*)malloc(sizeof(int));
*dynamicVar = 15;
free(dynamicVar);
}
常量定义:
const int MAX = 100; - 不可修改的常量
#define PI 3.14159 - 预处理器定义的常量
重要区别
全局变量在整个程序执行期间存在,而局部变量在函数调用结束时销毁。静态变量在程序生命周期内保持其值,即使超出其作用域。
练习题
选择题
以下哪种变量的生命周期最长?
A 自动变量
B 局部变量
C 静态变量
D 函数参数
填空题
使用______关键字定义的变量在函数调用结束后仍然保留其值。
编程题
编写一个程序,演示静态变量和自动变量的区别。
探究题
为什么动态分配的内存需要手动释放?如果不释放会有什么后果?
整型数据
整型数据是C语言中最基本的数据类型之一,理解其特性至关重要。
关键概念:
- 溢出问题:当超出类型范围时发生,例如char类型127+1=-128
- 补码表示:负数用补码存储,简化算术运算 补码转换演示
- 符号扩充:短整型转长整型时符号位扩展
- 整型常量:直接写在代码中的整数值,如123、0xFF
- 整型变量:存储整数值的变量
char a = 127;
a++;
int x = -5;
signed char c = -42;
int i = c;
整型分类:
| 类型 | 字节数 | 格式说明符 | 范围 |
| short | 2 | %hd | -32,768 到 32,767 |
| int | 4 | %d | -2,147,483,648 到 2,147,483,647 |
| long | 4/8 | %ld | -2,147,483,648 到 2,147,483,647 (4字节) 或更大(8字节) |
| long long | 8 | %lld | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
为什么使用补码?
补码表示法解决了0的两种表示问题,并统一了加法和减法操作。在补码系统中,加法运算可以统一处理正数和负数,无需额外的减法电路。
练习题
选择题
在32位系统中,int类型的最大值是多少?
A 32767
B 65535
C 2147483647
D 4294967295
填空题
整型溢出是指当计算结果超出数据类型的______时发生的现象。
探究题
为什么在C语言中需要多种整型数据类型?在实际编程中应如何选择?