c - 关于在 C 中使用指针的函数

标签 c function pointers

我在 C 中创建了一个简单的函数,它以 1 个指向 int 的指针、1 个指向 int 的双指针和一个整数作为参数(第三个参数可能无用,因为它表示存储在第一个空间中的整数数量论点指向)。它的作用是: 首先,在内存中留出足够的空间来容纳 2 个整数,并将第二个参数设置为指向该空间。其次,将整数从第一个参数指向的空间复制到第二个参数指向的空间。第三,它将第一个参数指向的空间中的所有整数递增 1。我知道这个函数没用,但我想知道我的解决方案出了什么问题。这是代码:

#include <stdlib.h>
#include <stdio.h>
int *x, *y;

void duplicateAndIncreaseByOne(int *arg1, int **arg2, int arg1Elements){
    int ctr;
    *arg2 = (int *) malloc(arg1Elements * sizeof(int));
    for(ctr = 0; ctr < arg1Elements; ctr++){        
        **(arg2 + ctr) = *(arg1 + ctr);
        *(arg1 + ctr) = *(arg1 + ctr) + 1;
    }
}

int main() {
  int j;
  y=(int *)malloc(2*sizeof(int));   
  *y=10; *(y+1)=50;
  duplicateAndIncreaseByOne(y, &x, 2);
  printf("The pointer y contains the elements y[0] = %d and y[1] = %d\n", y[0], y[1]);
  printf("The pointer x contains the elements x[0] = %d and x[1] = %d\n", x[0], x[1]);
}

最佳答案

行内

**(arg2 + ctr) = *(arg1 + ctr);

您正在将偏移量添加到 arg2 而不是 *arg2。应该是

*(*arg2 + ctr) = *(arg1 + ctr);

目前,您正在取消引用 arg2 之后的不存在的 int**

关于c - 关于在 C 中使用指针的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15989027/

相关文章:

javascript - JavaScript 中从对象到数组

JavaScript表单验证,数据无效时提交

javascript - 为什么要写一个从不返回值的函数

c++ - 将参数传递给常量函数是否会在内存中复制?

c - 中止陷阱 : 6 error while running this program in C

C:读取以 ASCII 编写的十六进制

c++ - 用于打开文件的紧凑指针表示法

C++ 无法让指针工作

c - 编程新手(C)

c - 如何将 ANTLR C 语法中的 postfix_expression 转换为 AST?