C:使用指针打印出数组每个元素的值和内存位置?

标签 c arrays pointers

我在主函数中生成了一个随机数组,如何使用单独的函数正确打印它,并在函数内部使用指针打印出该数组每个元素的值和内存位置。到目前为止,这是我的代码:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void printArray(int *pointertoArray, int *Size);

int main (void)
{
 srand(time(NULL));
 int array[10];
 int *pointer = NULL;
 for(int i = 0; i < size; i++)
 {
     array[i] = rand();
     *pointer = array[i];
     printArray(*pointer,size);
 }
}
void printArray(int *pointerToArray, int *size)
{
    int i = 0;
    do
    {
        printf("\nValue %d = %p ",i,*pointerToArray);
        i++;
    }
    while(i < size);
}

这是我想要实现的目标:

    value 1 = 0x7fff0815c0e0
    .....
    value 10 = 0x7fff0815c0ec

最佳答案

  • int *size 应该是 int size。您不传递指针,也不需要指针。
  • 实际上,size_t size 会更合适。
  • printArray 的调用应该位于循环之后。您只想打印一次数组。
  • printArray(*pointer, size); 应该是 printArray(array, size);
  • pointerToArray 应命名为 arraypointerToInts
  • 元素的值是pointerToArray[i],而不是i
  • 元素的地址是pointerToArray+i,不是*pointerToArray
  • printArray 中的循环应该进行顶级测试。 (没有理由对其进行底部测试,所以请放心。)
  • main 被声明为返回一个 int,但实际上并没有。

我们得到,

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void printArray(int *array, size_t size);

int main() {
   srand(time(NULL));
   int array[10];
   for (int i = 0; i < size; ++i) {
      array[i] = rand() % 1000;
   }

   printArray(array, sizeof(array)/sizeof(array[0]));
   return 0;
}

void printArray(int *array, size_t size) {
   for (int i = 0; i < size; ++i) {
      printf("Value @ %p = %d\n", array+i, array[i]);
   }
}

备选方案:

void printArray(int *pointerToInt, size_t size) {
    for (; size--; ++pointerToInt) {
       printf("Value @ %p = %d\n", pointerToInt, *pointerToInt);
    }
}

关于C:使用指针打印出数组每个元素的值和内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008576/

相关文章:

c++ - 新表达式会返回一个指向数组的指针吗?

javascript - 释放大数组内存的正确方法是什么

java - 如何在 Java 中对字符串数组中的日期进行排序?

c++ - 在 C++ 中为 HashMap 编写有效的复制构造函数

C++ : Why I can't print a const char* with sprintf?

Linux 上的 C++,确认库中的代码没有静态链接到生成的可执行文件中

c - 是否有任何浮点密集型代码在任何基于 x86 的架构中产生位精确的结果?

C中数组和字符串的混淆

c - 如何分配函数指针?

c - 如何将输出从二进制更改为 ascii?