【发布时间】:2017-05-11 14:15:33
【问题描述】:
如何返回全局 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;
}
【问题讨论】:
-
这又是来自那个 CS-50 的废话教程吗?
-
%s是字符串的格式,如果你想打印一个指针值,你想使用%p -
为什么不用
char * test = "Get my address"而不是char test[100] = "Get my address"? -
@Lundin 不,不是。这是一个英特尔 SGX 项目。目的是展示有问题的 enclave 代码如何仍然允许攻击者检索 enclave 的秘密。
-
问题是数组的地址是第一个元素的地址。您需要将 test 声明为
char *test = "Get my address";
标签: c pointers memory-address