fork download
  1. #include <stdio.h>
  2.  
  3. /* 指定された仕様の関数定義 */
  4. /* data1: 書き込み先の先頭アドレス, data2: コピー元の先頭アドレス, len2: コピーする長さ */
  5. void cat_data(int *data1, const int *data2, int len2) {
  6. for (int i = 0; i < len2; i++) {
  7. /* ポインタ記法で書くなら *(data1 + i) = *(data2 + i); と同じ意味 */
  8. data1[i] = data2[i];
  9. }
  10. }
  11.  
  12. int main(void) {
  13. /* 配列の宣言と初期化 */
  14. /* data1はサイズ7。最初の2つを1,2で埋め、残りは0で初期化される */
  15. int data1[7] = {1, 2};
  16.  
  17. /* data2はサイズ5。3,4,5,6,7を格納 */
  18. int data2[] = {3, 4, 5, 6, 7};
  19.  
  20. /* len2をsizeof演算子で求める */
  21. /* 配列全体のバイト数 ÷ 1要素のバイト数 = 要素数 */
  22. int len2 = sizeof(data2) / sizeof(data2[0]);
  23.  
  24. /* 関数呼び出し(ここがポイント) */
  25. /* data1には既に2つデータが入っているので、3つ目の場所(&data1[2] または data1+2)を渡す */
  26. cat_data(&data1[2], data2, len2);
  27.  
  28. /* 結果の出力 */
  29. for (int i = 0; i < 7; i++) {
  30. printf("data1[%d] = %d\n", i, data1[i]);
  31. }
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
data1[0] = 1
data1[1] = 2
data1[2] = 3
data1[3] = 4
data1[4] = 5
data1[5] = 6
data1[6] = 7