C : uninitialized char pointer and print out the address

标签 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尚未初始化,但如果需要的话我可能需要这样做。

补充: 我想首先初始化所有这些,然后进行一些分配,以便我可以打印出它们之间的所有内容并查看已分配的内容和位置。谢谢

最佳答案

首先,您需要确保指针显示正确的地址。指针与数组没有什么不同(是的,它们是不同的,但是..),所以你可以假设它们是数组。我假设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/

相关文章:

c - 必须输出两组两个字符串,但是当只有一个字符串插入到第一个scanf时,输出就乱了

c - 动态分配二维字符串数组并将其作为参数传递给函数

c - 在 C 递归函数中作为引用传递的数组的动态内存分配

c - 分配内存块然后创建内存的逻辑子 block 并返回指向这些子 block 的指针

带有字符串的 Python 内存泄漏

c - 优化循环中的函数指针检查

c - 我无法编译带有动态二维数组和指针的 C 文件

objective-c - int *p; 和有什么区别?和 ClassA *Obj?

c++ - C/C++ : error of printing a double array returned by a function

c++ - Lambdas 并将指针类作为参数传递