c语言中关于*和&的意思理解

   更新日期:2024.06.06

*代表指针运算符和乘法运算符;&代表取地址,与运算符,引用符。

用于二目运算中的按位(位运算)与运算:

单目是只需要一个操作数的意思,比如:a++ a--   *a  &a   

双目是需要两个操作数的意思,比如:a+b  a-b a*b  a/b  a%b  

三目是需要三个操作数的意思,比如:a=c>b?c:b;

例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。

扩展资料

运算符的使用

1、当需要初始化指针,以指向某些对象或函数时,需要获得这些对象或函数的地址:

floatx,*ptr;

ptr=&x;//合法:使得指针ptr指向x

ptr=&(x+1);//错误:(x+1)不是一个左值

2、当已具有一个指针,并且希望获取它所引用的对象时,使用间接运算符*(indirectionoperator),有时候这会被称为解引用运算符(dereferencingoperator)。它的操作数必须是指针类型。如果ptr是指针,那么*ptr就是ptr所指向的对象或函数。如果ptr是一个对象指针,那么*ptr就是一个左值,可以把它(即*ptr)当作赋值运算符左边的操作数:

floatx,*ptr=&x;

*ptr=1.7;//将1.7赋值给变量x

++(*ptr);//并将变量x的值加1

参考资料来源:百度百科—运算符



用做修饰符时,*表示指针,&表示别名
int *p; // p是一个指针
int &a = b; //a是b的别名(必须初始化)
而用作运算符时,*表示取值,&表示取地址
int a = 1;
int *p = &a; //取a的地址并初始化指针p
*p = 2; //修改p指向的值为2(a变成了2)
最后说一下你所谓的*p = &a;
这个语句表示取a的地址并赋值给p指向的内容。这条语句正确执行的前提是,p指向的内容是一个指针,也就是说p是二级指针。

*p=&a那么就是*p是a的值,p还是a的地址

答:孩子,这个是错误的。int *p = &a; 是这样定义的。或者int *p; p = &a;
p是一个指向int类型的指针变量,里面装着神马随你喜欢,反正要是int的(因为他是按int的字节长度取数据的)。p = a;这个是神马来的?最基础的概念啦,P是指针类型的(指向int),a 是一个普普通通的int类型,能赋值吗?
指针这个没啥难度的,无非就是一个变量指来指去。是你初学不了解而已,不懂的追问吧

别想什么 *p=&a 了,把这种写法当成不存在就好了

  • 17677285536 :C语言 中&和 *分别是什么意思?
    羿灵池1782 :答:int *p(); p为返回一个指针的函数,该指针指向整型数据。int (*p)(); p为指向函数的指针,该函数返回一个整型值 int **p; p是一个指针变量,它指向一个指向整型数据的指针变量。如果你想系统的了解建议你可以看看谭浩强的《c程序设计》(第三版)这本书通俗易懂。是学习c语言不错的...
  • 17677285536 :c语言 &与*的具体区别
    羿灵池1782 :答:&是取地址符号,既取得某一个变量的地址;如:&a 而* 是指针运算符(乘号就不说了),可以表示一个变量是指针类型;也可以表示一个指针变量的所指向的存储单元,可以获取某个地址存储的值。
  • 17677285536 :c语言*和&用法
    羿灵池1782 :答:是乘号;例:6=2*3;&是位运算与;例如:1&1=1;1&0=0;&&是关系与;做判断用,例如:if(a==1&&b==2) //是 当a==1并且b==2时if成立;
  • 17677285536 :求问c语言中*和++那个优先级别高呀
    羿灵池1782 :答:有两种表示 1个是指针运算 1个是乘 当*代表指针运算的时候 和++的优先级是相同的,只不过它们与变量的结合性是从右向左来算的 假如 有定义int *p; *p++;那么先算++ 在算 当*代表乘的时候优先级是低于++的
  • 17677285536 :关于C语言里面的 '&','*',
    羿灵池1782 :答:如果是c程序不是c++,你的程序是错的,在cpp里是可以用&表示引用的,但在你这里用还是错的,因为上面的那句void Insit...是函数原形的声明,必须与函数定义时一样才行 int stacksize;}SqStack;void InitStack(SqStack &S);//这个地方应该是void InitStack(SqStack *S);void InitStack(SqStack *...
  • 17677285536 :c语言中把*和&放在一块用是什么意思?(有简短例子)
    羿灵池1782 :答:伪代码,表示在被调函数体内的lq和主调函数体内的lq是同一个变量。
  • 17677285536 :C语言中*和/优先级
    羿灵池1782 :答:他俩是同优先级,就跟数学里的乘号和除号一模一样,如果没有括号,先算哪个都行。但是!由于编程语言里数据类型这个东西,所以C语言中的*和/要从左往右算!
  • 17677285536 :关于c语言中的*和&
    羿灵池1782 :答:int *a是指定义了一个a他是一个指针。a就是一个指针通常不在对a使用&;&b是取出b的地址,b本身是个实体,可能是个数字或者结构。但是传参的时候要传地址,所以用取地址符&;上面的L是个实体,int createSqlist(Sqlist *L,int maxSize);这一句的L跟原来的L没什么关系,这个你应该知道吧(...
  • 17677285536 :c语言中取地址符和*有什么区别?
    羿灵池1782 :答:不都是取地址。1,符号含义不同:&是取地址运算符,&a为变量a的地址。2,用法不同:声明中 int x; x 是整型量。语句中,&x 是整型量x的地址。不是指针,才有&。语句中,x 是整型量x的值。3,指向不同:*是指针运算符,*p为指针变量p所指向的存储单元中的内容。而指针变量p中一般只存放...
  • 17677285536 :C语言中*与[ ]有什么区别?
    羿灵池1782 :答:用你的例子来说,变量a,p都指向的是一个整形数组的首地址,你可以用下面的打印语句:printf("%p\n%p\n",a,p);两个值是一样的。这里的a和p没有太大的区别,只是a是有自己的内存空间的(3个整数的空间),而p没有。a[i](p[i])是表示从a(p)这个地址开始往后数i个元素,而这里的a,...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网