c语言指针函数怎么使用,举个完整的例子
时间: 2024-05-14 13:12:11 浏览: 91
指针函数是返回指针类型的函数。它可以用来返回指向数组、结构体、动态分配内存等数据类型的指针。下面是一个完整的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个返回int类型指针的函数
int* create_array(int size) {
int* arr = (int*) malloc(size * sizeof(int)); // 分配动态内存
for (int i = 0; i < size; i++) {
arr[i] = i + 1; // 初始化数组
}
return arr; // 返回数组指针
}
int main() {
int* ptr; // 定义一个指向int类型的指针
ptr = create_array(5); // 调用指针函数,返回数组指针
for (int i = 0; i < 5; i++) {
printf("%d ", ptr[i]); // 遍历数组指针,输出数组元素
}
free(ptr); // 释放动态内存
return 0;
}
```
上面的代码定义了一个返回int类型指针的函数create_array,该函数用于创建一个指定大小的数组,并返回该数组的指针。在main函数中,先定义一个指向int类型的指针ptr,然后调用create_array函数,将返回的数组指针赋值给ptr。最后遍历数组指针,输出数组元素,并释放动态内存。
相关问题
举个c语言函数内空指针的例子
可以这样写一个函数:
void func(void *ptr) {
if (ptr == NULL) {
printf("空指针\n");
} else {
printf("非空指针\n");
}
}
在函数内部,我们判断传入的指针是否为空指针,如果是,则输出“空指针”,否则输出“非空指针”。
用c语言代码举三个例子帮忙理解指针
好的,下面是三个用 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` 函数来释放这块动态分配的内存。
阅读全文