用c语言代码举三个例子帮忙理解指针
时间: 2023-11-04 10:09:16 浏览: 81
好的,下面是三个用 C 语言代码的例子来帮助理解指针。
1. 指针变量的定义和使用
```c
#include <stdio.h>
int main() {
int num = 10;
int *p;
p = # // 将 p 指向 num 变量的地址
printf("num 的值是:%d\n", num);
printf("num 的地址是:%p\n", &num);
printf("p 的值是:%p\n", p);
printf("p 指向的值是:%d\n", *p);
return 0;
}
```
这个程序中,我们定义了一个 `int` 类型的变量 `num`,并且定义了一个指向 `int` 类型变量的指针变量 `p`。然后,我们将 `p` 指向 `num` 变量的地址。在输出语句中,我们使用了 `&` 运算符来获取 `num` 变量的地址,使用了 `*` 运算符来获取 `p` 指向的变量的值。
2. 指针变量作为函数参数
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1 = 10, num2 = 20;
printf("交换前 num1 的值是:%d,num2 的值是:%d\n", num1, num2);
swap(&num1, &num2); // 通过指针传递变量的地址
printf("交换后 num1 的值是:%d,num2 的值是:%d\n", num1, num2);
return 0;
}
```
这个程序中,我们定义了一个函数 `swap`,它接受两个指向 `int` 类型变量的指针作为参数,并且将这两个变量的值交换。在 `main` 函数中,我们定义了两个 `int` 类型的变量 `num1` 和 `num2`,然后通过 `swap` 函数交换它们的值。在调用 `swap` 函数时,我们将 `num1` 和 `num2` 的地址作为参数传递给函数。
3. 动态内存分配
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
int *p;
printf("请输入数组长度:");
scanf("%d", &n);
p = (int*) malloc(n * sizeof(int)); // 分配动态内存
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个元素的值:", i + 1);
scanf("%d", &p[i]);
}
printf("数组的值是:");
for (int i = 0; i < n; i++) {
printf("%d ", p[i]);
}
printf("\n");
free(p); // 释放动态内存
return 0;
}
```
这个程序中,我们使用 `malloc` 函数来分配一块大小为 `n * sizeof(int)` 的内存,它返回一个指向 `int` 类型变量的指针。然后,我们可以使用指针来访问这块内存,并且将用户输入的值存储在这块内存中。在程序结束之前,我们使用 `free` 函数来释放这块动态分配的内存。
阅读全文