#include<stdio.h>
void initArray(int *parr , int size){
for(int i = 0; i<size ; i++){
printf("请输入第%i个元素的数据\n",i+1);
scanf("%d",parr++);
}
}
void printArray(int *arr, int size){
int i;
for(i=0;i<size;i++)
{
printf("%d ",*arr++);
}
}
int main () {
int arry[5];
int size = sizeof(arry)/sizeof(arry[0]);
initArray(arry,size);
printArray(&arry[0],size);
return 0;
}
初始化一个整型数组并打印其元素。然而,代码中存在一些错误,指出并提供修改建议:
scanf
函数在读取数组元素时,应该使用数组的地址而不是指针的递增。scanf
需要数组元素的地址来存储输入的值。修改scanf
的调用如下:
scanf("%d", &parr[i]);
- 在
printArray
函数中,使用*arr++
来打印元素是不正确的,因为arr
是一个指针,*arr++
会先打印当前元素的值,然后指针arr
会自增。正确的做法是先打印当前元素的值,然后再自增指针。修改如下:
printf("%d ", *arr);
arr++;
- 另外,虽然不是错误,但通常在
printf
中使用%d
来打印整数时,不需要在%d
后面添加空格。这是个人风格问题,但为了保持一致性,建议去掉空格。
以下是修改后的代码:
#include<stdio.h>
void initArray(int *parr, int size){
for(int i = 0; i < size; i++){
printf("请输入第%d个元素的数据\n", i+1);
scanf("%d", &parr[i]); // 修改这里
}
}
void printArray(int *arr, int size){
for(int i = 0; i < size; i++){
printf("%d ", *arr); // 修改这里
arr++;
}
printf("\n"); // 添加换行符以便于阅读
}
int main () {
int arry[5];
int size = sizeof(arry) / sizeof(arry[0]);
initArray(arry, size);
printArray(arry, size); // 这里应该传入数组的首地址
return 0;
}
请注意,在printArray
函数调用时,应该传入数组的首地址arry
而不是&arry[0]
,因为arry
本身就是数组的首地址。