引言
C语言作为一种广泛使用的编程语言,其简洁、高效的特点使其在系统编程、嵌入式开发等领域占据重要地位。本篇文章将围绕C语言程序设计的第二周核心知识点进行精选,并通过单选挑战的形式帮助读者巩固所学内容。
一、核心知识点精选
1. 函数的递归调用
递归是一种常用的算法思想,在C语言中可以通过函数的递归调用实现。递归函数的基本特点是:函数直接或间接地调用自身。
示例代码:
#include <stdio.h>
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
int main() {
int num = 5;
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
2. 静态变量和全局变量
静态变量和全局变量都是C语言中用于存储数据的方式,但它们在使用范围和生命周期上有所不同。
- 静态变量:在函数内部定义,仅在定义该变量的函数内部可见,生命周期为整个程序运行期间。
- 全局变量:在函数外部定义,在整个程序中可见,生命周期为整个程序运行期间。
示例代码:
#include <stdio.h>
int global_var = 10;
void func() {
static int static_var = 5;
printf("Static variable: %d, Global variable: %d\n", static_var, global_var);
}
int main() {
func();
return 0;
}
3. 指针与数组
指针是C语言中非常重要的一个概念,它允许程序员直接访问内存地址。数组是一种用于存储多个数据元素的集合,指针可以用来访问数组中的元素。
示例代码:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
printf("Array elements using pointer: %d, %d, %d, %d, %d\n", *ptr, *(ptr + 1), *(ptr + 2), *(ptr + 3), *(ptr + 4));
return 0;
}
4. 结构体与联合体
结构体和联合体是C语言中用于组织相关数据的复合数据类型。
- 结构体:可以包含不同类型的数据成员,成员之间互不影响。
- 联合体:所有成员共享同一块内存空间,在任何时刻只有一个成员有效。
示例代码:
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
typedef union {
int x;
float y;
} Data;
int main() {
Point p = {3, 4};
Data d = {5.5};
printf("Point x: %d, y: %d\n", p.x, p.y);
printf("Data x: %d, y: %f\n", d.x, d.y);
return 0;
}
二、单选挑战
下列关于递归函数的说法,正确的是( )。 A. 递归函数必须至少有一个终止条件 B. 递归函数没有终止条件 C. 递归函数只能有一个终止条件 D. 递归函数的终止条件可以多于一个
下列关于静态变量和全局变量的说法,正确的是( )。 A. 静态变量的生命周期为整个程序运行期间 B. 全局变量的生命周期为整个程序运行期间 C. 静态变量和全局变量的生命周期相同 D. 静态变量和全局变量的生命周期不同
下列关于指针和数组的说法,正确的是( )。 A. 指针可以用来访问数组中的元素 B. 指针只能用来访问数组中的第一个元素 C. 指针不能用来访问数组中的元素 D. 以上说法都不正确
下列关于结构体和联合体的说法,正确的是( )。 A. 结构体和联合体可以包含相同类型的数据成员 B. 结构体和联合体可以包含不同类型的数据成员 C. 结构体和联合体不能包含相同类型的数据成员 D. 以上说法都不正确
答案:1. A,2. B,3. A,4. B
