因此,例如我有一个char **数组有3个指针。 比方说:在C中,如何更改指针指向的内存地址?
array[0] has abc (points to "a", which lives in address 0x80033de0)
array[1] has def (points to "d", which lives in address 0x80033d)
array[2] has NULL
假设我抄阵列的串到不同的不同的存储位置,让我们说
0x7ffffff8 has abc (points to "a")
0x7ffffffc has def (points to "d")
我怎样才能改变阵列[0],使其指向0x7ffffff8而不是0x80033de0?
还array [1],以便它指向0x7ffffffc而不是0x80033d?
我已经尝试过不同种类的铸造,但一直未能得到它的工作。
编辑:
感谢您看我的问题的每个人。我问这个的原因是因为我正在使用内核,我需要将参数从内核空间复制到用户空间。我认为我可以通过将arg字符串复制到用户空间,然后更改原始args指针指向内核空间的内存地址。我想这不是一个好主意。
你试过了什么?你应该可以做'array [0] =(char *)0x7FFFFFF8' – slugonamission
“我已经尝试过不同类型的转换,但一直无法使它工作。” - 然后向我们展示代码和错误。 – millimoose
你究竟在做什么?你想有一个'char **'的深层副本吗?你想拥有复制感知结构吗?请多说明一点。 –