void arrin(int *arr) {
arr[] = {1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0}; // 編譯錯誤
for(int i=0; i<20; i++) printf("%d", arr[i]);
}
初始化列表 `{...}` 僅能在變量**定義時**使用**,不能用於已分配內存的賦值。
void arrin(int *arr, int n) {
int src[] = {1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
int len = sizeof(src)/sizeof(src[0]);
for (int i = 0; i < n && i < len; i++) {
arr[i] = src[i];
}
}
#include
void arrin(int *arr, int n) {
int src[] = {1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
size_t bytes = sizeof(src);
if (n * sizeof(int) < bytes) bytes = n * sizeof(int);
memcpy(arr, src, bytes);
}
const int *get_data(int *len) {
static const int data[] = {1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
*len = sizeof(data)/sizeof(data[0]);
return data;
}
// 調用
int len; const int *p = get_data(&len);
// 使用 p[0]...p[len-1] 只讀訪問
int main() {
int testarr[20];
arrin(testarr, 20); // 或 memcpy 版
for (int i=0; i<20; i++) printf("%d ", testarr[i]);
return 0;
}