有沒有一種方法可以將所有 int 陣列元素初始化為零,除了我們回圈將值設定為零的 for 回圈。這里陣列的大小由用戶的輸入決定。
#include <stdio.h>
int main() {
int num_cases = 0;
scanf("%d", & num_cases);
int arr_counter[num_cases];
for (int x = 0; x < num_cases; x ) {
arr_counter[x] = 0;
}
}
uj5u.com熱心網友回復:
是的,您可以在 C 標準下以多種方式做到這一點。例如:
memset()[堆疊和堆]calloc()[僅堆]- 回圈,例如
do-while和[堆疊while和for堆] { }[僅堆疊]
1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int arr[10];
size_t len_arr = sizeof(arr) / sizeof(*arr);
memset(arr, 0, sizeof(arr));
for(size_t i = 0; i < len_arr; i )
printf("%d\n", arr[i]);
return EXIT_SUCCESS;
}
注意:對于整數資料型別,我們也可以使用memset()將所有值設定為0或-1 。如果我們使用它來設定為其他值,它將不起作用。原因很簡單,一個位元組一個memset()位元組地作業。
2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int *arr = calloc(10, sizeof(int));
if(!arr)
{
fprintf(stderr, "bad ptr");
return EXIT_FAILURE;
}
for(size_t i = 0; i < 10; i )
printf("%d\n", arr[i]);
free(arr);
return EXIT_SUCCESS;
}
注意:您需要跟蹤arr最大長度。
注意:malloc()在指標中留下垃圾值,而calloc()用于memset()將它們初始化為0.
注意:您需要釋放堆分配的資源。
3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int arr[10];
size_t len_arr = sizeof(arr) / sizeof(*arr);
for(size_t i = 0; i < len_arr; i )
arr[i] = 0;
for(size_t i = 0; i < len_arr; i )
printf("%d\n", arr[i]);
return EXIT_SUCCESS;
}
注意:您可以使用任何您喜歡的回圈。
4
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int arr[10] = {};
size_t len_arr = sizeof(arr) / sizeof(*arr);
for(size_t i = 0; i < len_arr; i )
printf("%d\n", arr[i]);
return EXIT_SUCCESS;
}
uj5u.com熱心網友回復:
使用calloc中可用的功能stdlib.h
#include<stdio.h>
#include<stdlib.h>
int main(){
int num_cases;
scanf("%d", &num_cases);
int* arr = (int*)calloc(num_cases,sizeof(int));
return 0;
}
uj5u.com熱心網友回復:
要初始化 Array 的每個元素,您有兩種方法:
如果要進行靜態記憶體分配,可以像這樣初始化它:
int arr[10] = {};
如果要進行動態記憶體分配,可以使用 calloc 函式。
int * arr = (int ) calloc(numberOfElementsInArray,sizeOfEachElement);
在你的情況下,它會像:
int *arr_counter = (int*) calloc(num_cases,sizeof(int));
注意:您需要包含 malloc.h 頭檔案才能使用 calloc 函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454362.html
