指针数组 - 如何从一个指针数组存储到另一个指针数组

时间:2013-03-22 00:44:03

标签: c

#include<stdio.h>
int main(){
 char *p[2];
 char *q[2];
 char *a = "Hello";
 char *b = "world";
 p[0] = a;
 p[1] = b;
 *q = *p;
 printf("\n %s \n",q[0]);
 printf("\n %s \n",q[1]);
 return 0;
}

我想将存储在p中的指针存储到q中。当试图打印q [1]时,我得到了一个垃圾值。但q [0]正确打印“Hello”。

4 个答案:

答案 0 :(得分:2)

*q = *pq[0] = p[0]相同。这就是打印q[0]有效但打印q[1]没有效果的原因。如果您想要复制所有指针,您需要for循环或memcpy()

memcpy(q, p, sizeof(p))

答案 1 :(得分:0)

凯文提到的问题就是你所拥有的是一个指针数组......所以为了完成你想要的东西,你需要将指针存储到另一个数组中。这是因为(这些是示例值,请注意:)

p[0] = 0xaaa
p[1] = 0xbbb

*q == 0xaaa

所以

q[0] = 0xaaa

q [1]是垃圾

所以你没有复制数组,只有一个值:) 希望这有帮助!

答案 2 :(得分:0)

我明白你想做什么。您认为使用“* q = * p;”将p中的所有指针分配给q。但是你知道只是将p [0]分配给q [0],p和q不是指针。它们只是一个数组,你不能使用这种语法将整个数组复制到另一个数组,但你可以使用memcpy或逐个分配它的元素。

答案 3 :(得分:0)

如果我理解您要正确完成的操作,请将q声明为双指针**q,并将其指定为:q = p

相关问题