【问题标题】:Copying data to an integer pointer array through loop? [closed]通过循环将数据复制到整数指针数组? [关闭]
【发布时间】:2019-09-26 15:45:17
【问题描述】:

我正面临通过 for 循环将数据复制到 void 指针数组的问题。我不允许使用双指针。

我正在尝试这样的事情:

for(i=0;i<9;i++){
   array + i = i;
}

但我不能这样做,我知道,

我正在尝试这样做

memcpy(
  array+i,
  i,
  s
);

我已经分配了内存: 我的实际代码是这样的:

if(v->e_type==V_INT){
  //  printf("%p ",v->e_array+v->no_e);
        memcpy(
               v->e_array+v->no_e,
               new_val,
               v->e_sz
               );
}

【问题讨论】:

  • 使用双指针非常简单,如下所示:v->e_array[v->no_e]=new_val;
  • 除非您向我们展示每个变量是如何声明、分配和作为参数传递的,否则任何人都只能猜测。您的v-&gt;e_array[v-&gt;no_e]=new_val; 很可能需要为(v-&gt;e_array)[v-&gt;no_e]=new_val;,但无法判断您发布的内容。
  • @DavidC.Rankin -&gt;[] 具有相同的优先级,并且具有从左到右的关联性,所以不需要括号,对吧?
  • 是的,但问题是我不允许使用双指针
  • 但是你用的是什么?我们不知道,因为你没有给我们看。你刚才说的是指针数组,一点都不清楚

标签: c pointers memory heap-memory


【解决方案1】:

如果你有这样的事情:

int *x = malloc(sizeof(int)*4);

你可以用指针算法把值放进去:

for(int i = 0; i < 4; i++) {
    *(x+i) = i; // or *(x+1) = 0; for example
}

或者简单地说:

for(int i = 0; i < 4; i++) {
    x[i] = i;
}

【讨论】:

    猜你喜欢
    • 2019-12-19
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2018-04-26
    • 2013-12-20
    • 1970-01-01
    相关资源
    最近更新 更多