0

我有一些本地指针,在这之前我有两个全局指针。

我的任务是打印出两个全局指针 +/- 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 尚未初始化,但如果需要,我可能需要这样做。

另外:我想先初始化所有这些,然后再做一些分配,这样我就可以打印出它们之间的所有内容,看看分配了什么以及在哪里分配。谢谢

4

1 回答 1

0

首先,您需要确保指针显示正确的地址。指针与数组没有什么不同(是的,它们不同,但是..),所以你可以假设它们是数组。我假设 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');
于 2013-10-25T21:42:35.773 回答