我对编程很陌生,所以请多多包涵!
这是我的代码(在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;
}
我的打印语句没有正确打印出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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句