C语言指针有什么用请给出实例
时间: 2023-05-12 18:04:05 浏览: 62
C语言指针可以用来访问和操作内存中的数据,它是C语言中非常重要的概念之一。以下是一个简单的例子:
int main() {
int num = 10;
int *p = #
printf("num的值为:%d\n", num);
printf("num的地址为:%p\n", &num);
printf("p指向的地址为:%p\n", p);
printf("p指向的值为:%d\n", *p);
return 0;
}
在这个例子中,我们定义了一个整型变量num,并将其赋值为10。接着,我们定义了一个指向整型变量的指针p,并将其初始化为num的地址。通过*p,我们可以访问并输出num的值。
相关问题
C语言 函数指针使用实例
好的,下面是一个 C 语言函数指针的使用实例:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
int a = 10, b = 5;
int (*p)(int, int); // 声明一个函数指针变量
p = add; // 将函数 add 的地址赋值给指针变量
printf("a + b = %d\n", p(a, b)); // 调用函数指针
p = sub; // 将函数 sub 的地址赋值给指针变量
printf("a - b = %d\n", p(a, b)); // 调用函数指针
return 0;
}
```
这个例子中,我们定义了两个函数 `add` 和 `sub`,它们都接受两个整型参数并返回一个整型值。然后我们声明了一个函数指针变量 `p`,它可以指向接受两个整型参数并返回一个整型值的函数。我们将函数 `add` 的地址赋值给指针变量 `p`,然后调用指针变量 `p` 对应的函数,输出结果为 `a + b = 15`。接着,我们将函数 `sub` 的地址赋值给指针变量 `p`,再次调用指针变量 `p` 对应的函数,输出结果为 `a - b = 5`。
c语言用指针和结构体编写程序完成实例
好的,下面我来给您编写一个用指针和结构体实现的简单程序,该程序用于存储和打印学生的基本信息。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
typedef struct Student {
char name[20];
int age;
float score;
} Student;
int main() {
Student *students[MAX_STUDENTS];
int num_students = 0;
int i;
// 读入学生信息
while (num_students < MAX_STUDENTS) {
Student *s = (Student *) malloc(sizeof(Student));
printf("输入第 %d 个学生的姓名、年龄和成绩:", num_students + 1);
scanf("%s %d %f", s->name, &s->age, &s->score);
students[num_students++] = s;
printf("是否继续输入(Y/N):");
char c;
scanf(" %c", &c);
if (c == 'N' || c == 'n') {
break;
}
}
// 打印学生信息
printf("学生信息如下:\n");
for (i = 0; i < num_students; i++) {
printf("%s %d %.1f\n", students[i]->name, students[i]->age, students[i]->score);
}
// 释放内存
for (i = 0; i < num_students; i++) {
free(students[i]);
}
return 0;
}
```
在上面的程序中,我们定义了一个 `Student` 结构体,它包含了学生的姓名、年龄和成绩。
我们使用了指针数组 `students` 来存储所有学生的信息,同时使用一个变量 `num_students` 来记录学生数量。在程序中,我们通过 `malloc` 动态分配内存来保存每个学生的信息,然后将指向这个内存的指针存储到 `students` 数组中。
在读入学生信息时,我们使用了一个循环来连续读入学生信息,当 `num_students` 达到最大值或用户输入 `N/n` 时,跳出循环。
最后,我们使用循环打印所有学生的信息,并使用 `free` 释放之前动态分配的内存。
希望这个简单的例子可以帮助您理解如何使用指针和结构体来编写程序。