我在主函数中生成了一个随机数组,如何使用单独的函数正确打印它,并在函数内部使用指针打印出该数组每个元素的值和内存位置。到目前为止,这是我的代码:
#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
应命名为array
或pointerToInts
。- 元素的值是
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/