C 如何将指针分配给其他不同类型的指针

C 如何将指针分配给其他不同类型的指针,c,pointers,types,assign,C,Pointers,Types,Assign,将ptr1分配给ptr2时 unsigned int *ptr1; int * ptr2; 编译器抛出错误 如何执行此任务 对34类型的unsigned int执行ptr1的malloc。ptr2具有填充值。 必须对34个索引执行此分配。 说 (i=0;i)的 无效。ptr1[i]是一个unsigned int,ptr2[i]是一个int。*一元运算符只能应用于指针,不能应用于整数。它应该是: *ptr1[i] = *ptr2[i]; 巴尔马的回答是正确的。这里有另一种思考的方式 ptr1[

将ptr1分配给ptr2时

unsigned int *ptr1;
int * ptr2;
编译器抛出错误

如何执行此任务

对34类型的unsigned int执行ptr1的malloc。ptr2具有填充值。 必须对34个索引执行此分配。 说

(i=0;i)的

无效。
ptr1[i]
是一个
unsigned int
ptr2[i]
是一个
int
*
一元运算符只能应用于指针,不能应用于整数。它应该是:

*ptr1[i] = *ptr2[i];

巴尔马的回答是正确的。这里有另一种思考的方式

ptr1[i] = (unsigned int)ptr2[i];
是同一件事吗

*p[j] 
*(p[j])
*(*(p + j))
这和

*p[j] 
*(p[j])
*(*(p + j))
这和

*p[j] 
*(p[j])
*(*(p + j))

现在很明显,您要取消引用两次。您打算取消引用一次。只需删除外部
*

请提供语言。指针转换在C/C++中不同。如何在C中完成此操作?如果您使用
数组[index]
语法您不需要该
*
,下标运算符已经取消引用。编译器会抛出什么错误?请仔细阅读,它可以帮助您理解问题。在C语言中,您不会(也不应该)这样做分配给无符号时强制转换。必须在那里进行的转换定义良好。通过上述更改,编译器不会抛出任何错误。但是分段错误发生在ptr1[i]=(无符号int)ptr2[i];基本上我想将一个指针的内容复制/分配到另一个指针。这样,当我删除一个指针时,另一个指针的全部内容也会被删除。有什么方法可以做到吗?复制一个指针并不会复制它指向的内容,你最终会得到指向同一内存的两个指针。因此,如果你删除其中一个指针,它们就会被删除e都指向已删除的内存,您不能使用它们中的任何一个。