所以我有三个整数变量x,y和z以及三个指针ptr1,ptr2和ptr3。
变量x的值为4.
所以我想做的只是使用指针,将值x复制到y中,将x除以2,然后将其添加到y,然后将答案输出到z。
我到目前为止(只是基本的):
#include <stdio.h>
int main()
{
int x = 4;
int y,z;
int* ptr1;
int* ptr2;
int* ptr3;
}
现在我如何将x复制到y。
我知道我可以将x复制到ptr1,但执行类似的操作:
ptr1 = &x;
另外除以2.如果我这样做:
ptr1 = &x/2;
它给了我一个错误。
我是C的新手,所以感谢任何帮助。
答案 0 :(得分:1)
ptr1 = &x;
ptr2 = &y;
*ptr2 = *ptr1;
*ptr1 /= 2;
*ptr2 += *ptr1;
ptr3 = &z;
*ptr3 = *ptr2;
答案 1 :(得分:1)
首先应该将指针指向指向变量。
int* ptr1 = &x;
int* ptr2 = &y;
int* ptr3 = &z;
此不表示您复制,例如x进入ptr1。这意味着ptr1 指向x 。
为了使用指针来改变它们指向的变量的值,你需要取消引用指针,即使用*
运算符。
*ptr2 = *ptr1; // Same as y = x;
*ptr1 = *ptr1 / 2; // Same as x = x / 2;
// ... and so on
答案 2 :(得分:0)
请记住,&amp; x是x的地址。因此,如果x乘以2,你基本上会尝试划分内存地址
如果你想这样做,那么ptr1 =&amp; x然后是ptr1 / 2
答案 3 :(得分:0)
将x的值复制到y中。您可以使用以下命令执行此操作:
ptr1 = &x;//ptr1 stores the address of x
ptr2 = &y;//ptr2 stores the address of y
现在复制它:
* ptr2 = * ptr1;
让我为你打破上述声明。
*address
表示address
的值。因此*ptr2
表示y
地址的值已分配*ptr1
,地址为x的值。
了解这个基本逻辑,您可以将程序编写为:
ptr1 = &x;//ptr1 stores the address of x
ptr2 = &y;//ptr2 stores the address of y
*ptr2 = *ptr1;//copy x into y
*ptr1 = *ptr1/2;//divide x by 2
*ptr2 = *ptr2 + *ptr1;//add it to y
ptr3 = &z;//ptr3 stores the address of z
*ptr3=*ptr2;//output the result in z