使用指针复制值和除数。

时间:2016-04-20 07:00:00

标签: c pointers

所以我有三个整数变量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的新手,所以感谢任何帮助。

4 个答案:

答案 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