我有一些本地指针,在此之前 我得到了两个全局指针。
我的任务是打印出两个全局指针 +/- 32 之间的每个字节。 本地指针会有所不同,因为我将其标记为与全局指针不同。
我的问题是如何首先初始化两个指针之间的每个字节? 以下是我的尝试但不起作用:
// global scope
char * minimum_ptr, * maximum_ptr;
int main()
// inside main function
char * temp_ptr = minimum_ptr-32;
char * add_ptr = minimum_ptr-32;
while (temp_ptr != maximum_ptr+32) {
add_ptr = NULL;
temp_ptr++;
}
// getting errors
printf("%p", (char *)(minimum_ptr));
printf("%p", (char *)(minimum_ptr+1));
我已更正它,但仍然令人困惑,抱歉。我也很困惑。我想要的只是打印出两个指针之间的地址,minimum_ptr-32和maximum_ptr+32,并且minimum_ptr和maximum_ptr尚未初始化,但如果需要的话我可能需要这样做。
补充: 我想首先初始化所有这些,然后进行一些分配,以便我可以打印出它们之间的所有内容并查看已分配的内容和位置。谢谢
最佳答案
首先,您需要确保指针显示正确的地址。指针与数组没有什么不同(是的,它们是不同的,但是..),所以你可以假设它们是数组。我假设maximum_ptr的地址大于minimum_ptr的地址。
uint dist = maximum_ptr - minimum_ptr;
for (int i = 0; i < dist; ++i) {
minimum_ptr[i] = 'A';
}
或者你可以使用 std::fill
std::fill(minimum_ptr, maximum_ptr, 'a');
http://www.cplusplus.com/reference/algorithm/fill/
您可以调整指针值
std::fill(minimum_ptr - 32, maximum_ptr + 32, 'a');
关于C : uninitialized char pointer and print out the address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599678/