c变量赋值与 相等实质

1.
int a=10,
b=a;
是吧a的地址付给b还是把10付给b;
2.if(a==b)
是判断ab的值相等 还是判断ab指向同一个地方 (上课老师将c#时候提到的 没听太明白)

#include
void main(){
int a=10,b=10;
int *p,*q;
p=&a;
q=&b;
if(*p==*q)
printf("1");
else
printf("0");

}
结果是1 为什么与老师讲的有区别(老师说是判断是否指向相同的地方)

基础类型是赋值,是判断值,比如 int float

指针就是给地址了..
*p种,是指“指向p地址的值”,其它的也没什么特别的了

指针才是比较是否相同的地址。值只要存储的值一样就相等。当然如果是相同地址,值更是相等。

    int a=10,b=10;
    int *p,*q;
    p=&a;
    q=&b;

    printf("p = %x q = %x",p,q);   

p和q的地址完全不同,只是地址里面存放的值相同

由于a和b都等于10,所以通过指针解引用后比较,结果相等,所以打印1

if(*p==*q)这是比较两个指针所指向的对象的值,即指针的解引用,如果写为if(p==q)这才是比较两个指针是否相等,即指针的本身,指针的地址!