gpt4 book ai didi

C - 指向数组 : how to copy just the value (not address) of one pointer to another? 的指针

转载 作者:行者123 更新时间:2023-11-30 14:47:01 26 4
gpt4 key购买 nike

如果指针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] 是行不通的。

<小时/>

这是我的代码:

#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 中指针的语法很困惑。

最佳答案

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

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

position:    0  1  2  3  4  5  6
starting: { a0 a1 a2 a3 a4 a5 a6 }
\ \ \ \ \ \
final: { b0 a0 a1 a2 a3 a4 a5 }

因此,您想要按照建议的方式移动每个值,但必须从最后开始(否则您将用相同的值覆盖所有内容)。

for(i = 9; i > 0; i--) {
pr[i]=pr[i-1];
}
pr[0] = NEWVALUE;

关于C - 指向数组 : how to copy just the value (not address) of one pointer to another? 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51734845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com