写一个c语言指针指向地址取值的代码
时间: 2023-07-16 20:15:44 浏览: 87
下面是一个简单的示例代码,展示如何使用指针来访问内存地址中存储的值:
```c
#include <stdio.h>
int main() {
int num = 42;
int *num_ptr = #
printf("num = %d\n", num);
printf("num_ptr = %p\n", num_ptr);
printf("*num_ptr = %d\n", *num_ptr);
return 0;
}
```
输出结果应该为:
```
num = 42
num_ptr = 0x7ffee5c062bc
*num_ptr = 42
```
在这个示例中,我们首先定义了一个整型变量 `num`,并将其初始化为 42。然后,我们创建了一个指向 `num` 变量地址的指针 `num_ptr`。我们使用 `&` 运算符获取 `num` 变量的地址,并将其赋值给 `num_ptr` 指针。
接下来,我们使用 `printf` 函数打印 `num` 变量的值,以及 `num_ptr` 指针所指向的地址。最后,我们使用 `*` 运算符来访问 `num_ptr` 指针所指向的地址中存储的值,并将其打印出来。注意,在打印 `num_ptr` 指针时,我们使用 `%p` 格式化字符,以打印指针所指向的地址。
相关问题
c语言结构体指针取值
好的,以下是用C语言的指向结构体指针,从键盘输入3名学生信息,包含学号、姓名、三门课程成绩的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 3
struct student {
int id;
char name[20];
float score[3];
};
int main() {
struct student *ptr;
int i;
ptr = (struct student*) malloc(MAX_STUDENTS * sizeof(struct student));
for (i = 0; i < MAX_STUDENTS; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &(ptr+i)->id);
printf("姓名:");
scanf("%s", (ptr+i)->name);
printf("三门课程成绩:");
scanf("%f %f %f", &(ptr+i)->score[0], &(ptr+i)->score[1], &(ptr+i)->score[2]);
}
printf("\n学生信息如下:\n");
for (i = 0; i < MAX_STUDENTS; i++) {
printf("学号:%d\n", (ptr+i)->id);
printf("姓名:%s\n", (ptr+i)->name);
printf("三门课程成绩:%.2f %.2f %.2f\n", (ptr+i)->score[0], (ptr+i)->score[1], (ptr+i)->score[2]);
}
free(ptr);
return 0;
}
```
这段代码中,我们定义了一个结构体 `student`,包含学号、姓名和三门课程成绩。然后我们使用指向结构体的指针 `ptr`,动态分配了一个大小为 `MAX_STUDENTS` 的结构体数组。
接着,我们使用 `for` 循环,从键盘输入每个学生的信息,包括学号、姓名和三门课程成绩。注意,我们使用了指向结构体的指针 `ptr` 来访问每个学生的信息。
最后,我们使用 `for` 循环,输出每个学生的信息,包括学号、姓名和三门课程成绩。
最后,我们使用 `free` 函数释放了动态分配的内存。
希望这个示例能够帮助你理解如何使用指向结构体的指针从键盘输入学生信息。
c语言指针为什么是取址之后在取值
C语言中指针是一种特殊的变量类型,它存储了一个变量的地址。在C语言中,取地址符&用于获取变量的地址,而指针解引用符*用于获取指针指向的变量的值。
因此,在使用指针时,首先需要通过取地址符&获取变量的地址,然后将该地址赋值给指针变量。之后,可以使用指针解引用符*获取指针指向的变量的值。
取址之后再取值的原因是,指针本身只存储了变量的地址,而不是存储变量的实际值。因此,需要通过指针解引用符*将指针指向的地址中存储的值获取出来。
阅读全文