首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >指向数组的C指针:如何将一个指针的值(而不是地址)复制到另一个指针?

指向数组的C指针:如何将一个指针的值(而不是地址)复制到另一个指针?
EN

Stack Overflow用户
提问于 2018-08-08 04:23:53
回答 1查看 617关注 0票数 0

如果指针pr指向数组aa = {1, 2, 3, 4, 5, 0, 0, 0, 0, 0},那么我们可以通过指针pr[0]pr[1]pr[2],...访问该数组。

我如何移动数组(通过指针操作),这样我才能得到{1, 1, 2, 3, 4, 5, 0, 0, 0, 0}?显然,pr[i] = pr[i-1]不会工作。

下面是我的代码:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int aa[10] = {1, 2, 3, 4, 5, 0, 0, 0, 0, 0};
    int i, m, *pr = aa;
    printf("\n pr[0] = %d, pr[1] = %d, pr[2] = %d, pr[3] = %d", pr[0], pr[1], pr[2], pr[3]);

    for(i = 0; i < 9; i++) {
        m = *(pr + i);
        pr[i+1] = m;
    }

    printf("\n \n pr[0] = %d, pr[1] = %d, pr[2] = %d, pr[3] = %d \n", pr[0], pr[1], pr[2], pr[3]);
    printf("\n \n aa[0] = %d, aa[1] = %d, aa[2] = %d, aa[3] = %d \n", aa[0], aa[1], aa[2], aa[3]);
    return(1);
}

我正在使用.Call为R编写一个C函数,C函数中的所有数组都必须通过这种类型的指针来访问。我对C中指针的语法感到非常困惑。

EN

回答 1

Stack Overflow用户

发布于 2018-08-08 04:32:34

基本上,您希望在示例1中添加一个值,并从数组中删除最后一个值,在示例中为0

如果你看看发生了什么,你会看到以下内容:

代码语言:javascript
复制
position:    0  1  2  3  4  5  6
starting: { a0 a1 a2 a3 a4 a5 a6 }
              \  \  \  \  \  \
final:    { b0 a0 a1 a2 a3 a4 a5 }

所以你想要按照你建议的那样移动每个值,但是你必须从最后开始(否则你会用相同的值覆盖所有的东西)。

代码语言:javascript
复制
for(i = 9; i > 0; i--) {
    pr[i]=pr[i-1];
}
pr[0] = NEWVALUE;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51734845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档