我对编程很陌生,所以请耐心等待!
这是我的代码(C(:
int * arrayExpander(int arr[], int size);
int main()
{
int arr[] = { 1,2,3,4,5 };
int size = 5;
int* arrPtr = arrayExpander(arr, size);
for (int i = 0; i < size * 2; i++) {
printf("New array: %d n", *arrPtr);
}
}
int * arrayExpander(int arr[], int size)
{
int newInt[10];
int* expandedArr = &newInt;
//move elements from original to expanded and initialise remaining elements with 0
for (int i = 0; i < size * 2; i++) {
if (i < size) {
expandedArr[i] = arr[i];
} else {
expandedArr[i] = 0;
}
}
return expandedArr;
}
我的print语句没有正确打印expandedArr中存储的值。我尝试了一些变体,但不确定如何修复。
提前感谢
在您的代码中,expandedArr
是一个本地指针变量,在我们从函数返回后,它会被销毁。我们需要使用malloc
来分配内存,以延长它们的使用寿命。请参阅以下代码:
#include<stdio.h>
#include<stdlib.h>
int * arrayExpander(int arr[], int size);
int main()
{
int arr[] = { 1,2,3,4,5 };
int size = 5;
int* arrPtr = arrayExpander(arr, size);
for (int i = 0; i < size * 2; i++) {
printf("New array: %d n", *(arrPtr+i)); // *arrPtr prints only first element
}
}
int * arrayExpander(int arr[], int size)
{
int* expandedArr = malloc(10*sizeof(int)); // You need allocate memory in heap
//move elements from original to expanded and initialise remaining elements with 0
for (int i = 0; i < size * 2; i++) {
if (i < size) {
expandedArr[i] = arr[i];
} else {
expandedArr[i] = 0;
}
}
return expandedArr;
}
输出:
New array: 1
New array: 2
New array: 3
New array: 4
New array: 5
New array: 0
New array: 0
New array: 0
New array: 0
New array: 0