C语言入门之指针

C语言入门之指针

本文将详细讲解C语言中指针的定义、使用方法以及在函数中的应用。每个知识点都配有示例代码,便于理解。

C语言入门 — 指针

指针的定义

指针是一个变量,它存储了另一个变量的内存地址。指针是C语言中非常重要的概念,能够直接操作内存,使得程序更为高效和灵活。

1
2
3
int a = 10;  // 定义一个整型变量 a
int *p; // 定义一个指向整型的指针 p
p = &a; // 将变量 a 的地址赋值给指针 p

在上面的例子中,p 是一个指针,它存储了变量 a 的地址。通过 p,我们可以直接访问或修改 a 的值。

指针的使用

指针可以用来访问数组元素、动态内存分配、字符串处理等。在数组中,指针和数组名关系密切,可以用指针操作数组元素。

1
2
3
4
5
6
7
int arr[3] = {1, 2, 3};
int *p = arr; // 指针 p 指向数组 arr 的第一个元素

printf("%d
", *p); // 输出 1
printf("%d
", *(p+1)); // 输出 2

在这里,p 指向数组 arr 的第一个元素,通过 p 可以访问数组中的任意元素。

函数和指针

在C语言中,函数可以通过指针来传递参数,这种方式允许函数直接修改外部变量的值或处理动态数据结构。

1
2
3
4
5
6
7
8
9
10
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}

int a = 5, b = 10;
swap(&a, &b); // 传递 a 和 b 的地址
printf("a = %d, b = %d
", a, b); // 输出 a = 10, b = 5

在这个示例中,swap 函数通过指针参数直接交换了变量 ab 的值。


例题强化训练

例题 1: 指针基础

编写一个程序,定义两个整型变量,用指针交换它们的值,并打印出交换后的结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}

int main() {
int a = 3, b = 8;
swap(&a, &b);
printf("a = %d, b = %d", a, b); // 应输出 a = 8, b = 3
return 0;
}

例题 2: 数组与指针

编写一个程序,使用指针遍历并打印一个整型数组的所有元素。

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main() {
int arr[] = {10, 20, 30, 40, 50};
int *p = arr;

for (int i = 0; i < 5; i++) {
printf("Element %d: %d", i, *(p + i));
}
return 0;
}

例题 3: 指针与函数

编写一个程序,使用指针参数计算两个整型变量的和,并将结果返回到主函数中。

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

void add(int *result, int a, int b) {
*result = a + b;
}

int main() {
int sum;
add(&sum, 7, 15);
printf("Sum: %d", sum); // 应输出 Sum: 22
return 0;
}

通过以上内容的学习和练习,你应该对C语言中的指针有了初步的了解。指针虽然是一个难点,但掌握后能够极大提升你的编程能力。