&:在C语言中有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。
a&b表示啊a和b按位进行与运算。&后面是个变量。每个变量对应一块存储空间。每个存储空间有一个编号,也就是地址,&变量名表示取出这个编,变量名表示取出这个编号所对应的存储空间里的值。
c语言运算符号
1、算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4、位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
找到变量在内存空间的位置,对变量进行操作时,会找到该处。
&后面是个变量。每个变量对应一块存储空间。每个存储空间有一个编号,也就是地址,&变量名 表示取出这个编,变量名表示取出这个编号所对应的存储空间里的值。
依照我的理解:& 取地址 就是找到那个分配的内存空间 然后去那块内存里 找我们需要的变量 我这可能是用了oc的解释 因为对c不是很熟悉。
&是取地址运算符,&a为变量a的地址。
系统就会在内存中分配一个空间,*a的值就是变量a的值3 定义一个指向整型数据的指针,作用与&相反,它是根据变量的地址取出变量的值在编译时就给它分配一个地址,该指针指向整型数据;&a就是2000,再把3写入这个空间。
int *p()&是取址运算符。又如scanf(&quot。。下面是定义和声明中用到指针的小结int *p。运行后p=2000就是把a的地址2000赋给p,作用是提取一个变量的地址。&就提取它的地址,由地址找到a在内存中的空间。*是指针运算符。
它由n个指向整型数据的指针元素组成,它指向一个指向整型数据的指针变量 p为指向含n个元素的一维数组的指针变量,那么在编译时%d" p为返回一个指针的函数。
如果你想系统的了解建议你可以看看谭浩强的《c程序设计》(第三版)这本书通俗易懂,比如是2000,p=&a,该函数返回一个整型值。int **p。
假如先定义了一个整型指针变量p。是学习c语言不错的教材.g int a。
int (*p)()。而这个空间在内存中的位置就是它的地址,它会先根据&a知道a的地址。
int (*p)[n]。p是一个指针变量。int *p[n]定义指针数组p,&a)。比如你定义了一个变量当你输入3时 p为指向函数的指针。
我明白你什么意思,指针的概念确实不好理解!1,先给你说下指针,你把指针理解了运算符的抵消就明白一半了!
指针里面是保存的内存地址(就像int变量里面保存的是整型变量一个意思)。
整型变量保存在内存里面,我可以通过这个变量名称来调用这个数据,也可以通过指针里面这个变量的地址加上*(间接访问运算符),来调用这个数据。
2,再说下运算符*和&
*是间接访问运算符:就是可以通过地址,找到这个地址里面的变量,所以
*p1
就等同于变量a
&是求地址运算符:就是将变量所在的内存地址,提取出来
这两个运算符的运算等级是相同的,也就是说谁距离变量近,就谁先。所以*&a和*(&a)是一样的,都是先取地址,在对地址进行间接访问。但是一定要注意*与&的顺序,&*a是无效的。
3,再说下题
*运算符就是对地址进行操作的,那么
*地址
的意思就是访问地址里面的数据,而&a就是取变量a的地址,所以*&a:
先取变量a的地址
再
对地址进行间接访问,两个操作就相互抵消了,最后还是变量a。
4,还有什么不明白的么?