C语言的指针变量前面的星号怎么有时候写了有时候没写? c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上...

作者&投稿:殷黄 (若有异议请与网页底部的电邮联系)
定义,声明的时候,必须写

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指向的数据。
可能叫做 "地址解析"之类的你更容易明白吧

指针是一个变量,里面保存的是她指向的地址。int x=8;

当定义一个指针变量时需要带星号如:int *p;(定义一个int型的指针)。

当给这个指针赋值时为:*p=x(表示给p所指向的空间放一个值,这个值是8)。

当你给指针赋地址时为:p=&x;(对x取址则它就是地址,表示
给p的空间里放一个值,这个只是地址)

有星号表示这是一个指针变量。

请阅读C语言指针方面的教程。

作为标识符,*不是合法的字符。因此指针名称中不含*。在声明指针时用到的*表示类型,例如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。
====
[原创回答团]

C语言函数名后面括号里的指针变量为何有时带星号有时不带?~

因为释放空间对地址进行操作,需要参数是个指针变量,函数对链表所在地址进行操作
而排序函数对链表进行操作,需要参数是链表的本身的变量类型,函数对链表本身进行操作

其实没那么复杂。主要是区别于在声明定义的时候,有的人会迷惑,要不要加*
如下
int *p
p=&x;//此处明明是p=&x???????,好往下看

int *p=&x//其实在声明的时候这样也是可以的。但是这样写定义不明确。

我们现在来总结一下,在定义的时候*号,只是一个说明符。意义是告诉你p是一个指针,而不是一个其他数。在声明的时候就一定需要*了,
所以请注意上面的对比。

在引用的时候区别就相当简单了
p是指针变量,指的是一个变量的地址。
*p代表的是所指向的这个变量的值。
举例:
int a=3;
int *p
p=&a;
printf("%d%d",*p,p);
这个时候两个输出的值,第一个就是3(变量的值),第二个输出的是变量a存储的地址单位。
楼主要是还有疑问可以一起讨论

C语言的指针变量前面的星号怎么有时候写了有时候没写?
答:double *dp=NULL;在使用的时候,*号并不是指针的标志,而是一种运算符号,意思是解应用。int a=5;int b=3;int * ip=&a;那么,直接使用ip,ip是这个地址,是一个指针,比如ip=&b,那么ip就指向了b。而使用*ip,是对ip进行解引用计算,也就是取出ip指向的内容,*ip的值是5(a的值),*i...

C语言中为什么要加星号!
答:在C语言中有指针的概念,在定义某个类型的指针时,会采用 TYPE *name;的形式。 具体说明在第三部分中一并叙述。3做取值运算符。对某个指针变量做*操作,表示取该指针指向地址中的值。在这种情况下*位于所要取值的指针变量前。如*p。比如 include <stdio.h>int main(){ int a=3; int *p...

C语言中定义变量时在变量前面加2个星号是什么意思
答:C语言在定义变量时加两个星号是表明这个变量为二级指针 C语言中在定义变量时使用 * 号是为了表明该变量为指针 指针有分一级指针,二级指针,三级指针等,有几个 * 号就相当于是几级指针

为什么C中声明指针要在每个变量前面加星号
答:int a; 这个是整型变量 int *a; 这个才是指针。表示*a才是int 。这个是C语言的规则。

C语言中指针的*号和乘法的*号,怎么更好的区分?
答:p;这个就死记硬背吧,指针定义时前面的星号就是告诉编译器变量p就是个指针,除此之外没有别的意思了。在指针使用的场合前面会加个星号。注意不是定义指针哦,是使用指针,比如:p + 1;上述这个语句的意思就是使用指针,怎么使用?就是把指针指向的值加上1.这个也死记硬背吧,使用指针时前面的...

C语言函数名后面括号里的指针变量为何有时带星号有时不带?
答:因为释放空间对地址进行操作,需要参数是个指针变量,函数对链表所在地址进行操作 而排序函数对链表进行操作,需要参数是链表的本身的变量类型,函数对链表本身进行操作

C语言指针什么时候加星号什么时候不加
答:比如 int *p;定义一个指针,p是int *类型,这里的*主要说明变量是指针类型。2、作为间接访问运算符 int a = 2;int *p = &a;printf("%d\n", p, *p);以上面的例子来说:p:是指针,是一个地址,它是int *类型。p:是指针所指内存中存储的数据,是一个int类型。

C语言 函数指针调用时加星号与不加星号都行是为什么?
答:定义,因为它是定义。不带“*”,就无法区分是指针还是变量。&:叫做,取地址符。p1=&a;其实就是把a的地址取出来,赋给p1。你可以这么理解,*P1才是和变量a同一个等级的东西。&相当于降级取地址,那p1去掉星号*也相当于取地址。通俗来说*p本身就是为了地址操作而存在的,比如地址的交换,传递...

C语言指针什么时候要带*什么时候不带*?
答:严格说来,指针什么时候都不带*。int *p,那个*是int的,不是p的。但为了在int下声明不是指针的变量,规定在每个指针变量前加一个*,以便编译器识别,这就使好多人误以为*是指针变量的了。

c 的星号是什么意思?
答:在C语言中,星号还可以用于指针变量的解引用。即通过指针获取所指向的变量的值。例如,int *p指向一个整型变量,使用*p就可以获取该变量的值。这种方式可以在程序中方便地访问和修改内存中的数据,但也需要注意指针变量的有效性,否则会导致运行时错误。在C语言中,星号还可以用来定义指针数组。指针数组...