-
基础知识:
C语言的基本数据类型有哪些?它们的大小是多少?
C语言的基本数据类型包括:
- 整型:int、char、short、long、long long
- 浮点型:float、double、long double
- void(空类型)
它们的大小取决于编译器和操作系统,但通常情况下的典型大小是:
- int:通常为4字节(32位系统)或8字节(64位系统)
- char:1字节
- float:4字节
- double:8字节
什么是指针?如何声明和使用指针?
指针是一个变量,其值为另一个变量的地址。声明指针时需要指定指针所指向变量的类型。例如:
int *ptr; // 声明一个整型指针
int num = 5;
ptr = # // 将ptr指向num的地址
使用指针可以通过间接访问来修改变量的值,例如 *ptr = 10;
将会把num的值改为10。
解释一下C语言中的数组和字符串。
数组是一组相同类型的元素的集合,通过索引访问。例如:
int arr[5]; // 声明一个包含5个整型元素的数组
arr[0] = 1; // 设置第一个元素的值为1
字符串是以空字符 '\0' 结尾的字符数组,通常用char数组表示。例如:
char str[10] = "Hello"; // 声明并初始化一个字符串
字符串可以使用库函数来处理,如strlen、strcpy等。
什么是结构体?如何定义和使用结构体?
结构体是一种用户定义的数据类型,用于存储多个相关数据项。定义结构体如下:
struct Person {
char name[50];
int age;
float height;
};
C语言中的内存管理如何进行?什么是动态内存分配?
C语言中的内存管理主要通过malloc、calloc、realloc和free等函数来进行。动态内存分配是在程序运行时根据需要分配内存,使用完后再释放内存的过程。例如:
[Something went wrong, please try again later.]
语法和特性:
C语言中的关键字和其用途
C语言中的关键字是预定义的具有特殊含义的标识符,用于控制程序的结构和执行过程。以下是一些常见的关键字及其用途示例:
- auto:定义自动变量,生命周期与作用域在函数调用时创建和销毁。
auto int num = 10;
- enum:定义枚举类型,一组具名整数常量的集合。
enum Color { RED, GREEN, BLUE };
enum Color selectedColor = BLUE;
- extern:声明外部变量或函数,表示其定义在别处。
extern int num;
- goto:无条件跳转语句,使程序跳转到指定标签处。
goto label;
// ...
label:
printf("Jumped to the label\n");
- if:条件语句,根据条件执行不同的代码块。
- eles:与if语句搭配使用,表示条件不成立时执行的分支。
if (score >= 60) {
printf("Pass\n");
} else {
printf("Fail\n");
}
- for:循环语句,控制循环次数和条件。
- while:循环语句,基于条件执行循环体。
- do:循环语句的开始,至少执行一次循环体。
do {
printf("Enter a positive number: ");
scanf("%d", &num);
} while (num <= 0);
- char:声明字符类型数据。
char ch = 'A';
- short:定义短整数类型数据。
- int:定义整数类型数据。
- long:定义长整数类型数据。
- float:定义单精度浮点数类型。
- double:定义双精度浮点数类型。
- signed:指定有符号数据类型。
- unsigned:指定无符号数据类型。
- register:请求将变量存储在寄存器中,加快访问速度。
register int count = 0;
跳出循环
- return:函数返回语句,将结果返回给调用者。
- continue:跳过当前循环的剩余部分,继续下一轮循环。
for (int i = 0; i < 10; ++i) {
if (i % 2 == 0) {
continue;
}
printf("%d\n", i);
}
- break:跳出当前循环或switch语句。
for (int i = 0; i < 10; ++i) {
if (i == 5) {
break;
}
}
- sizeof:获取数据类型或变量的大小(字节数)。
printf("Size of int: %lu\n", sizeof(int));
- static:声明静态变量、函数或限制变量的作用域。
static int count = 0;
- struct:定义结构体类型。
struct Point {
int x;
int y;
};
- switch:多分支选择语句,根据不同的值执行不同的分支。
- case:在switch语句中定义不同的分支条件。
- default:switch语句中的默认分支。
switch (choice) {
case 1:
printf("Option 1 selected\n");
break;
case 2:
printf("Option 2 selected\n");
break;
default:
printf("Invalid choice\n");
}
- typedef:为数据类型定义新名称。
typedef unsigned long ulong;
- union:定义联合体类型,多个成员共享同一块内存。
union Data {
int i;
float f;
char str[20];
};
- void:指示函数无返回值或指针不指向任何特定类型。
void printMessage() {
printf("Hello, world!\n");
}
- volatile:声明变量可能会被意外修改,防止编译器优化。
volatile int flag = 0;
- const:定义常量,值不可修改。
const int MAX_SIZE = 100;