使用指针算法将数据从第一个数组复制到第二个数组

标签 c arrays function-pointers void-pointers

我正在学习 C,我遇到了这个我无法弄清楚的问题。编写一个函数,计算整数数组 a 的元素加上 6 模 10,并将结果存储在数组 b 中。例如,如果 5 是数组 a 的第二个元素,那么数组 b 的第二个元素应该是 (5+6)%10 , 即 1。该函数具有以下原型(prototype),n 是数组的长度,ab 是整数数组。

我做到了:

       void arithmetic (int *a, int n, int *b)
       {
         int *arr1; arr1=a; int *arr2; arr2=b; 

         int i;

         for(i = 0; i < n; i++) {
           *arr1 = *(((a + i) + 6) % 10);
           *arr2 = *arr1;
         }

         }//don't know if the function is correct. 

最佳答案

几件事:

  • 无需更新第一个数组的实际内容(这修复了关于您的代码始终将结果存储在 a 的第一个元素中的错误)
  • 使用一些括号来确保您获得正确的操作顺序。

    void newArr(int *a, int n, int *b) {
        int *arr1; arr1 = a; int *arr2; arr2 = b;
    
        for (int i = 0; i < n; i++) {
            *(arr2 + i) = (*(arr1 + i) + 6) % 10;
        }
    }
    

想想你的标题“...using Pointer arithemtic”。您需要将循环计数器添加到 arr1arr2 的数组指针,以便它遍历每个数组的每个元素:*(arr2 + i) *(arr1 + i)

关于使用指针算法将数据从第一个数组复制到第二个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49079640/

相关文章:

c - Sqlite3 使用 C 从用户输入添加新行到表中

c - if then语句c编程

指向对象的 C++ 函数指针

c++ - 类变量中类方法的列表/vector

C - 带有格式化字符串的 strcmp()

c - 什么是蹦床功能?

c - 需要帮助返回/传递多个数组

arrays - ^ 运算符在 Visual C++ 中的使用

c - 加载lua文件后静态结构数组打印垃圾

c - 传递函数指针的参数