c - 返回全局字符串变量的地址

标签 c pointers memory-address

如何返回全局 char* 变量的地址?我必须为一个项目这样做。我必须根据伪代码编写函数,如下所示:

string* get_variable_address();

C 没有字符串,所以我假设 string* 将变成 char**。我已经尝试了很多东西,但我无法让它发挥作用。我所拥有的看起来像这样:

#include <stdio.h>

char test[100] = "Get my address";

int main(void) {
    char** address = return_variable_address();

    printf("The address is: %s\n", *address);

    return 0;
}

char** return_variable_address() {
    return &test;
}

最佳答案

C doesn't have string so I assume string* will become char**

可能不是。 C 中的字符串是字符数组,您可以通过 char* 访问它。因此,您可以相当程度地简化您的程序以获得所需的结果:

#include <stdio.h>

char* return_variable_address (void);

char test[100] = "Get my address";

int main(void) {
    char* address = return_variable_address();

    printf("The content stored at the address: %s\n", address);

    return 0;
}

char* return_variable_address (void) {
    return test;
}

请注意,所有这些都是不好的做法 - 避免全局变量。

关于c - 返回全局字符串变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917979/

相关文章:

c - 将 PPM 图像旋转 90 度 C

c - 确定存储输入所需的数组长度

c - 编译器如何在中等内存模型中解析地址?

C99 | (BItfield) 结构中的结构无法使用 name1.name2.variable 进行选择

java - BufferedReader readLine 在使用 C 客户端和 Java 服务器时保持阻塞状态

连接 2 个字符串并返回一个新指针

c - 试图找出为什么我的结构指针存储数据不准确

c++ - 当我们 "have to"在循环中将指针传递给某个函数时,如何防止内存泄漏?

c - c中的最低和最高内存地址?

c - 查找内核数据结构的内存地址