C语言中指针a指向数组b,可把a指向的地址写入text中,然后在另一个程序中由指针c指向这个地址后访问b
时间: 2023-11-22 17:51:58 浏览: 25
在C语言中,指针和数组有着密切的关系。数组名代表数组首元素的地址,因此可以用指针指向数组。下面是一个示例代码:
```c
#include <stdio.h>
int main() {
int b[5] = {1, 2, 3, 4, 5};
int *a = b; // a指向数组b的首元素
// 把a指向的地址写入text中
FILE *fp = fopen("text", "w");
fprintf(fp, "%p", (void *)a);
fclose(fp);
// 在另一个程序中打开text文件,并读取a指向的地址
fp = fopen("text", "r");
void *addr;
fscanf(fp, "%p", &addr);
fclose(fp);
// 由指针c指向这个地址后访问b
int *c = addr;
printf("%d\n", *(c+2)); // 输出3,即b[2]
return 0;
}
```
在上面的代码中,我们将指针a指向数组b的首元素,然后把a指向的地址写入了文件text中。在另一个程序中,我们打开了text文件并读取了a指向的地址,然后用指针c指向这个地址,最后访问数组b中的第3个元素(即b[2]),输出了3。需要注意的是,写入和读取地址时需要使用指针类型void*,因为指针类型可能在不同平台上有所不同。
相关问题
C语言中指针a指向数组b,可把a指向的地址写入text中,然后在另一个main函数中由指针c指向这个地址后访问b吗
在C语言中,指针a指向数组b,可以将指针a指向的地址写入text中。在另一个main函数中,如果我们将指针c指向这个地址,那么c指向的就是同一个数组b。可以通过指针c来访问数组b中的元素。需要注意的是,如果在指针c指向数组b的同时修改了数组b的内容,那么指针a和c都会受到影响,因为它们指向同一个地址。
C语言 申请一个指针,将字符串写入指针中
可以使用 `malloc()` 函数在堆上动态分配一块内存,并将字符串写入其中。如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = (char*)malloc(sizeof(char) * 10); // 动态分配10个字节的内存
strcpy(str, "Hello"); // 将字符串写入到指针中
printf("%s\n", str); // 输出指针中的字符串
free(str); // 释放内存
return 0;
}
```
在这个示例中,我们首先使用 `malloc()` 函数动态分配了 10 个字节的内存,并将返回的指针强制转换成 `char*` 类型,然后使用 `strcpy()` 函数将字符串 "Hello" 写入到指针中。最后,我们将指针中的字符串输出,并使用 `free()` 函数释放了动态分配的内存,以防止内存泄漏。