C语言的指针变量前面的星号怎么有时候写了有时候没写?
发布网友
发布时间:2022-08-19 07:32
我来回答
共4个回答
热心网友
时间:2023-05-26 00:36
定义,声明的时候,必须写
如
int * ip;
char * cp;
double *dp=NULL;
在使用的时候,*号并不是指针的标志,而是一种运算符号,意思是解应用。
int a=5;
int b=3;
int * ip=&a;
那么,直接使用ip,ip是这个地址,是一个指针,比如ip=&b,那么ip就指向了b。
而使用*ip,是对ip进行解引用计算,也就是取出ip指向的内容,*ip的值是5(a的值),*ip=b,是对ip指向的地址赋值,此时你输出a,得到的值是3
希望能帮到你,不懂再问我
***********************************************
一个指针,指向一个数据,也就是间接地使用了这个数据,我们可以称之为引用。
直接使用ip,就是间接使用(得到地址),通过地址解析出原始数据,可以称之为解引用,所以*ip就得到了ip指向的数据。
可能叫做 "地址解析"之类的你更容易明白吧
热心网友
时间:2023-05-26 00:37
指针是一个变量,里面保存的是她指向的地址。int x=8;
当定义一个指针变量时需要带星号如:int *p;(定义一个int型的指针)。
当给这个指针赋值时为:*p=x(表示给p所指向的空间放一个值,这个值是8)。
当你给指针赋地址时为:p=&x;(对x取址则它就是地址,表示
给p的空间里放一个值,这个只是地址)
热心网友
时间:2023-05-26 00:37
有星号表示这是一个指针变量。
请阅读C语言指针方面的教程。
热心网友
时间:2023-05-26 00:38
作为标识符,*不是合法的字符。因此指针名称中不含*。在声明指针时用到的*表示类型,例如int *p,也可以写成int* p,表示p是int*类型的变量,即指向int变量的指针。之所以要采取前一种写法,是因为可以方便同时声明多个变量和对应的指针,例如int a, *p, b,声明了int变量a、b,以及int的指针p。这里的*出现在声明中,不是运算符。
关于引用:简单而言,引用是指取得确定地址的对象(一个对象可以是一个变量,严格来说,和“数据”是两个概念——后者仅强调值而不强调地址的存在性),因此C语言中取地址运算符&表示引用语义,得到的地址值是对象的引用 (reference) 。通过一个引用(C语言中就是地址)得到对象的过程,称为解引用 (dereference) 。
作为单目运算符的*是解引用运算符,也称为间接访问运算符(因为对于指针指向对象的操作需要先把指针解引用成对象以后再访问),作用于指针上,得到被指向的对象,是取地址运算符对应的逆运算。
例如,int a, *p = &a;,那么之后在有效作用域内,*p的结果就是a。
====
[原创回答团]
参考资料:原创