我有個問題。我必須將陣列劃分為動態陣列并回傳帶有引數的指標。
當我嘗試運行此代碼時,我收到(被信號 11:SIGSEGV 中斷)此訊息。我認為這與我的指標有關。但我什至沒有收到任何警告,我不知道在哪里看。
#include <stdio.h>
#include <stdlib.h>
int splitData(int data[], int size, int splitPlace, int **firstArray);
int main() {
int data[6] = {1, 2, 3, 4, 5, 6};
int size = 6;
int *ptr = NULL;
int n = splitData(data, size, 3, &ptr);
printf("%d", n);
for(int i = 0; i < 3; i)
{
printf("[%d]", ptr[i]);
}
return 0;
}
int splitData(int data[], int size, int splitPlace, int **firstArray)
{
*firstArray = (int *)malloc(splitPlace * sizeof(int));
for(int i = 0; i < splitPlace; i)
{
*firstArray[i] = data[i];
}
return 0;
}
uj5u.com熱心網友回復:
*firstArray[i] 的優先級錯誤。你需要 (*firstArray)[i]。
更清楚的可能是分配
int *new_array = malloc(...);
*firstArray = new_array.
然后在你的回圈體中使用 new_array 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/524309.html
標籤:C指针动态数组
