Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C *a=b和a=&b之间的区别?_C_Pointers - Fatal编程技术网

C *a=b和a=&b之间的区别?

C *a=b和a=&b之间的区别?,c,pointers,C,Pointers,如果有的话,它们之间的区别是什么 *a = b; 及 这两种不同的方法可以使一个var指向另一个var吗?不,它们做的事情不同*a=b;不会改变a,但会改变a指向的内容。a=&b;确实改变了a,但它没有改变a所指的内容。这是两种不同的操作 *a=b将b的值复制到a指向的内存位置 a=&b更改a,因此现在a指向b的位置。*a=b表示a指向的地址中b的副本值 a=&b表示a现在指向b,作为一个小例子: int b=10,c=20; int *a=0; a=&b; *a=c; 现在您将b

如果有的话,它们之间的区别是什么

*a = b;


这两种不同的方法可以使一个var指向另一个var吗?

不,它们做的事情不同*a=b;不会改变a,但会改变a指向的内容。a=&b;确实改变了a,但它没有改变a所指的内容。

这是两种不同的操作

*a=b将b的值复制到a指向的内存位置

a=&b更改a,因此现在a指向b的位置。

*a=b表示a指向的地址中b的副本值

a=&b表示a现在指向b,作为一个小例子:

int b=10,c=20;
int *a=0;
a=&b; *a=c; 

现在您将b的值更改为c的值

以下代码和平应该可以回答您的问题:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int  main(void){
    int a = 5;
    int b = 10;

    int *p = &b;
    printf("A = %d\nB = %d\n*p = %d\n",a,b,*p);

    *p = a;
    printf("\n");
    printf("A = %d\nB = %d\n*p = %d\n",a,b,*p);
    return 0;
}

int*a=0和int a=0有什么区别?如果没有任何上下文,这个问题就没有多大意义。a和b是什么?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int  main(void){
    int a = 5;
    int b = 10;

    int *p = &b;
    printf("A = %d\nB = %d\n*p = %d\n",a,b,*p);

    *p = a;
    printf("\n");
    printf("A = %d\nB = %d\n*p = %d\n",a,b,*p);
    return 0;
}
A = 5
B = 10
*p = 10
A = 5
B = 5
*p = 5