#include <stdio.h>
/* 指定された仕様の関数定義 */
/* data1: 書き込み先の先頭アドレス, data2: コピー元の先頭アドレス, len2: コピーする長さ */
void cat_data(int *data1, const int *data2, int len2) {
for (int i = 0; i < len2; i++) {
/* ポインタ記法で書くなら *(data1 + i) = *(data2 + i); と同じ意味 */
data1[i] = data2[i];
}
}
int main(void) {
/* 配列の宣言と初期化 */
/* data1はサイズ7。最初の2つを1,2で埋め、残りは0で初期化される */
int data1[7] = {1, 2};
/* data2はサイズ5。3,4,5,6,7を格納 */
int data2[] = {3, 4, 5, 6, 7};
/* len2をsizeof演算子で求める */
/* 配列全体のバイト数 ÷ 1要素のバイト数 = 要素数 */
int len2 = sizeof(data2) / sizeof(data2[0]);
/* 関数呼び出し(ここがポイント) */
/* data1には既に2つデータが入っているので、3つ目の場所(&data1[2] または data1+2)を渡す */
cat_data(&data1[2], data2, len2);
/* 結果の出力 */
for (int i = 0; i < 7; i++) {
printf("data1[%d] = %d\n", i
, data1
[i
]); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiDmjIflrprjgZXjgozjgZ/ku5Xmp5jjga7plqLmlbDlrprnvqkgKi8KLyogZGF0YTE6IOabuOOBjei+vOOBv+WFiOOBruWFiOmgreOCouODieODrOOCuSwgZGF0YTI6IOOCs+ODlOODvOWFg+OBruWFiOmgreOCouODieODrOOCuSwgbGVuMjog44Kz44OU44O844GZ44KL6ZW344GVICovCnZvaWQgY2F0X2RhdGEoaW50ICpkYXRhMSwgY29uc3QgaW50ICpkYXRhMiwgaW50IGxlbjIpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7CiAgICAgICAgLyog44Od44Kk44Oz44K/6KiY5rOV44Gn5pu444GP44Gq44KJICooZGF0YTEgKyBpKSA9ICooZGF0YTIgKyBpKTsg44Go5ZCM44GY5oSP5ZGzICovCiAgICAgICAgZGF0YTFbaV0gPSBkYXRhMltpXTsKICAgIH0KfQoKaW50IG1haW4odm9pZCkgewogICAgLyog6YWN5YiX44Gu5a6j6KiA44Go5Yid5pyf5YyWICovCiAgICAvKiBkYXRhMeOBr+OCteOCpOOCujfjgILmnIDliJ3jga4y44Gk44KSMSwy44Gn5Z+L44KB44CB5q6L44KK44GvMOOBp+WIneacn+WMluOBleOCjOOCiyAqLwogICAgaW50IGRhdGExWzddID0gezEsIDJ9OyAKICAgIAogICAgLyogZGF0YTLjga/jgrXjgqTjgro144CCMyw0LDUsNiw344KS5qC857SNICovCiAgICBpbnQgZGF0YTJbXSA9IHszLCA0LCA1LCA2LCA3fTsKICAgIAogICAgLyogbGVuMuOCknNpemVvZua8lOeul+WtkOOBp+axguOCgeOCiyAqLwogICAgLyog6YWN5YiX5YWo5L2T44Gu44OQ44Kk44OI5pWwIMO3IDHopoHntKDjga7jg5DjgqTjg4jmlbAgPSDopoHntKDmlbAgKi8KICAgIGludCBsZW4yID0gc2l6ZW9mKGRhdGEyKSAvIHNpemVvZihkYXRhMlswXSk7CiAgICAKICAgIC8qIOmWouaVsOWRvOOBs+WHuuOBl++8iOOBk+OBk+OBjOODneOCpOODs+ODiO+8iSAqLwogICAgLyogZGF0YTHjgavjga/ml6Ljgasy44Gk44OH44O844K/44GM5YWl44Gj44Gm44GE44KL44Gu44Gn44CBM+OBpOebruOBruWgtOaJgCgmZGF0YTFbMl0g44G+44Gf44GvIGRhdGExKzIp44KS5rih44GZICovCiAgICBjYXRfZGF0YSgmZGF0YTFbMl0sIGRhdGEyLCBsZW4yKTsKICAgIAogICAgLyog57WQ5p6c44Gu5Ye65YqbICovCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDc7IGkrKykgewogICAgICAgIHByaW50ZigiZGF0YTFbJWRdID0gJWRcbiIsIGksIGRhdGExW2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==