C:未初始化的char指针并打印出地址

时间:2013-10-25 21:26:02

标签: c pointers memory

我有一些本地指针,之前 我有两个全球指针。

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

增加: 我想首先初始化所有这些并在那之后做一些任务,这样我就可以打印出所有内容并查看分配的内容和位置。谢谢

1 个答案:

答案 0 :(得分: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');