C语言指针什么时候加星号什么时候不加

作者&投稿:采嘉 (若有异议请与网页底部的电邮联系)
C语言 函数指针调用时加星号与不加星号都行是为什么?~

定义,因为它是定义。不带“*”,就无法区分是指针还是变量。
&:叫做,取地址符。p1=&a;其实就是把a的地址取出来,赋给p1。
你可以这么理解,*P1才是和变量a同一个等级的东西。&相当于降级取地址,那p1去掉星号*也相当于取地址。通俗来说*p本身就是为了地址操作而存在的,比如地址的交换,传递之类的。
我纵观你正在学的知识点,悄悄告诉你一个规律。你是否发现在调用的时候一般是没有*号的。
比如swap(p1,p2);(这里是引用函数,不是定义函数)。
比如for中和scanf中的p++
再比如数组赋值:p=a(这里的a是数组首地址)
像printf和定义指针,一般是*p
请你细细理解,好好品味。
我只是心血来潮答个题。越学到后面你会发现指针很灵活。送我个赞,我得不到什么,但你肯定能得到很多。

定义,声明的时候,必须写

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

1、声明及定义一个指针时,需要用*表示标识符是一个指针。比如

int *p;

定义一个指针,p是int *类型,这里的*主要说明变量是指针类型。


2、作为间接访问运算符

int a = 2;
int *p = &a;
printf("%d
", p, *p);

以上面的例子来说:

p:是指针,是一个地址,它是int *类型。

*p:是指针所指内存中存储的数据,是一个int类型。



开始定义的时候加*,比如:int *p;/*这里加*是表示p是一个int型的指针*/
指向值的时候加*,比如:int *p,a;*p=a;
指向地址的时候不加*,比如:int *p,a[10];p=a;或*p=a[0];
也就是一开始定义的时候的*是表明p是指针,但是到后面用的时候,p表示地址,*p表示p指向的"地址的值".ok???

定义的时候加,如int *pt;定义了一个整型指针pt
使用指针指向的地址内的数据的时候加,如char arr="abc",*ptc=arr;*ptc='d';就把arr[0]给改了
给指针赋值的时候不加,当然像上面定义的时候直接赋值是要加的,其他如int a=32,*pt;pt=&a;就是让pt指向a
其他都不用吧

说的具体点,你这样子我没法说


c语言中指针变量可以相加吗?其含义是什么?
指针指向数组元素时,可以对指针进行以下运算:\\x0d\\x0a 加一个整数(用+或+=),\\x0d\\x0a 减一个整数(用-或-=),自加运算,如p++,++p\\自减运算,如p--,--p\\x0d\\x0a 两个指针相减,只有p1和p2都指向同一数组中的元素时才有意义)。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 为...

C语言里,为什么有的指针要加*,有的却不用加?
调用指针指向内容时加*;对指针进行操作不加*;

C语言里面的指针 什么时候需要* 什么时候不需要* 这个 好纠结啊...
而通过上一句语句,指针变量p所指向的内存单元,即是a的指针指向的内存单元,即a的内存单元。因此这个语句相当于往变量a的内存单元里面放了一个数100 \/\/也就是说,*p=100 等同于a=100 总结一下:需要操作指针的时候,不用 需要操作指针变量指向的内存单元的内容的时候,要 ...

c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上呢?_百度...
其实没那么复杂。主要是区别于在声明定义的时候,有的人会迷惑,要不要加 如下 int *p p=&x;\/\/此处明明是p=&x???,好往下看 int *p=&x\/\/其实在声明的时候这样也是可以的。但是这样写定义不明确。我们现在来总结一下,在定义的时候*号,只是一个说明符。意义是告诉你p是一个指针,而不是一...

C语言,文件指针fp什么时候自己自增?
文件指针fp在执行以下指令时都会自己自增,执行一次fprintf、fwrite、fread、fscanf、fgetc、fputc、fgets、fputs。都会自动后移相应的位置的。

c语言,*p+1到底是指针指向的数值加一,还是指针指向第2个数组元素??_百...
是指针指向的数值加一,(p+1)是指针指向第2个数组元素 格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。示例:...

请问c语言中形参为指针是为设么实参有时加&有时不加,求高手解答。
至于加括号,有可能是碰到了运算符优先级的情况,比如结构体成员运算符样子和小数点相同,它就比*的优先级高,如果你想用*p,就必须用括号把它俩和右边隔开,像(*p).name这样。除此外还有函数指针,在声明时两对括号均不可省,如void (*p)();其他情况下比较复杂,可以参照字符指针跟字符数组的关系...

c语言中指针可不可以用在自增自减运算符中
可以使用。对于TYPE *类型的p,可以使用p++或p--来实现p移动位置,指向下一个或上一个元素的效果。在C语言中,指针的本质为地址,所以当TYPE*类型的指针在进行++或--运算时,其指向的地址值,会实际增加或减少TYPE所占内存的大小。也就是说,从数值上,当p++时,值会增加sizeof(TYPE), 当p--...

C语言中指针的赋值语句中 那个*符号什么时候应该带什么时候不带?
include <stdio.h> int main( ){ int *p,a=5;p=&a;printf("指针内容是%d\\n指针地址是%d\\n",*p,p);return 0;} a中的内容是5,&是取地址符,把a的地址赋给p指针。p是地址,*p是内容。运行一下就知道。

c语言指针* p++什么意思?
p++就是先取出指针p指向的地址单元的数据,之后再将该值加1。由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据。若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据。在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但...

礼县17539046537: C语言指针什么时候加星号什么时候不加 -
全巧苏欣: 开始定义的时候加*,比如:int *p;/*这里加*是表示p是一个int型的指针*/ 指向值的时候加*,比如:int *p,a;*p=a; 指向地址的时候不加*,比如:int *p,a[10];p=a;或*p=a[0]; 也就是一开始定义的时候的*是表明p是指针,但是到后面用的时候,p表示地址,*p表示p指向的"地址的值".ok???

礼县17539046537: c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上呢? -
全巧苏欣: 其实没那么复杂.主要是区别于在声明定义的时候,有的人会迷惑,要不要加* 如下 int *p p=&x;//此处明明是p=&x???????,好往下看 int *p=&x//其实在声明的时候这样也是可以的.但是这样写定义不明确.我们现在来总结一下,在定义...

礼县17539046537: C语言的指针变量前面的星号怎么有时候写了有时候没写? -
全巧苏欣: 定义,声明的时候,必须写 如 int * ip; char * cp; double *dp=NULL; 在使用的时候,*号并不是指针的标志,而是一种运算符号,意思是解应用. int a=5; int b=3; int * ip=&a; 那么,直接使用ip,ip是这个地址,是一个指针,比如ip=&b,那么ip就...

礼县17539046537: C语言中运用指针的时候什么时候可以省略*号 -
全巧苏欣: 定义指针时用*,之后使用指针时就不需要了,如果要用指针所指向的变量就得加上*,举个例子吧:int * p; int a=5; p = &a; cout<<*p<<endl; 输出为5;这里的*p就是变量a,而p就是指向变量a的地址;

礼县17539046537: C语言中指针的赋值语句中 那个*符号什么时候应该带什么时候不带? -
全巧苏欣: 变量赋值给地址(指针),变量加&或者地址(指针)加* 比如:int a; int *p; p=&a; *p=a; 意思都是p指针指向了a变量的地址.

礼县17539046537: C语言指针符号问题? -
全巧苏欣: 当你想保存一个地址的时候不加 *:Int a = 0; p = &a; 当你想取指针里的值的时候加 * :int b; b = *p; ==> b = *(&a) ==> b = 0; // 就是说把a地址保存的值取出来.当*p的值还是指针的时候:int *p = NULL; int *q = NULL; int a = 0,b =1 ; q = &a; p = &q; *p= &a; // 结果就是q 指向a , p指向q; (*(*p)) 等于 0;p= &a; // 结果就是p指向a; q 也指向a; p

礼县17539046537: c语言指针用法++甚么时候有+甚么时候没有
全巧苏欣: C语言指针是C的精华,用法很多,需要深入仔细体会

礼县17539046537: 指针变量在哪些时候前面加星号,哪些时候不加,说简单点,谢谢,看书头都晕了 -
全巧苏欣: 首先你要理解指针就是内存中的地址 你要使用地址的时候就直接用指针p,你要用地址中的值得时候就得加上*,你要想求值的地址就要用&.比如说 int *p,那么p是存放这个int型数字的地址,*p就是这个地址上的数字,那么就是这个值了. int n,n是数字,&n就是存放n的地址了(地址的意思就是内存上的片段编码); 这样说够明白了吧

礼县17539046537: 指针变量前什么时候用*什么时候用&? -
全巧苏欣: “*”表示这是个指针变量,也表示这个指针的地址上的内容 比如int *i; 表示i是指针,其中int *可以作为一个整体,比如(int *)0x214FF835,把0x214FF835直接强制转换为存放int的地址. “&”表示引用当前变量地址. 比如 int i=14;\\假设i...

礼县17539046537: 为什么C中声明指针要在每个变量前面加星号 -
全巧苏欣: 定义的时候 这个*就是用来表示指针的. 比如 int a; 这个是整型变量 int *a; 这个才是指针. 表示*a才是int .这个是C语言的规则.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网