C语言中 取内容与取地址运算符的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:48:55
* & a = * (& a) =* p1 = a即 *&互相抵消 &*无意义问题是 怎么就互相抵消了,怎么就无意义了p1是指针变量

我明白你什么意思,指针的概念确实不好理解!
1,先给你说下指针,你把指针理解了运算符的抵消就明白一半了!
指针里面是保存的内存地址(就像int变量里面保存的是整型变量一个意思)。
整型变量保存在内存里面,我可以通过这个变量名称来调用这个数据,也可以通过指针里面这个变量的地址加上*(间接访问运算符),来调用这个数据。
2,再说下运算符*和&
*是间接访问运算符:就是可以通过地址,找到这个地址里面的变量,所以 *p1 就等同于变量a
&是求地址运算符:就是将变量所在的内存地址,提取出来
这两个运算符的运算等级是相同的,也就是说谁距离变量近,就谁先。所以*&a和*(&a)是一样的,都是先取地址,在对地址进行间接访问。但是一定要注意*与&的顺序,&*a是无效的。
3,再说下题
*运算符就是对地址进行操作的,那么 *地址 的意思就是访问地址里面的数据,而&a就是取变量a的地址,所以*&a: 先取变量a的地址 再 对地址进行间接访问,两个操作就相互抵消了,最后还是变量a。
4,还有什么不明白的么?

* 的优先级大于&,所以取值必须在& a加括号,不然会无意义

详细点儿,看不懂你什么意思...
把规范的写出来...
如果是这样,这个赋值确实没什么意义...