[英]Stack smashing error when manipulating array of ints in function
因此,我試圖制作一個簡單的程序,該程序采用部分填充的數組,並在開頭添加一個整數,以將所有現有元素向右移動。 看來我在這里所添加的內容正確地進行了移位,但是一旦所有代碼執行完畢,我就會得到堆棧粉碎檢測到的錯誤。
這是我的代碼:
#include <stdio.h>
void addCommand(int *, int, int);
void main() {
int i;
int list[10];
list[0] = 1;
list[1] = 5;
printf("Before add:\n");
for (i = 0; i < 2; i++) {
printf("%d\n", list[i]);
}
addCommand(list, sizeof(list), 4);
printf("Adding 4:\n");
for (i = 0; i < 3; i++) {
printf("%d\n", list[i]);
}
}
void addCommand(int *arr, int size, int new) {
int k;
printf("%d", arr[0]);
for (k = size - 1; k >= 0; k--) {
if (&arr[k] != NULL) {
if (k > 0) {
arr[k] = arr[k-1];
} else {
arr[k] = new;
}
}
}
}
這是輸出:
如果有人指出我在這里做錯了,將不勝感激!
addCommand(list, sizeof(list), 4);
上一行未通過列表數組中元素的數量。 您必須執行以下操作:
sizeof(arr)/sizeof(arr[0])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.