C语言中为什么要加星号!

char*s,*(s+i)=*(s+n-i);比如这二个加不加星号都是一样的嘛!我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义!... char *s ,*(s+i)=*(s+n-i); 比如这二个加不加星号都是一样的嘛!
我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义!
展开
 我来答
风若远去何人留
推荐于2017-09-26 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450122
专业C/C++软件开发

向TA提问 私信TA
展开全部

在C语言中使用*号有两种情况。


1 做乘法运算符使用。

在计算机中一般不使用数学的乘号×,而是用更容易打出的*替代。

如果*出现在运算中,且左右都有表达式,那么*就是当做乘号来使用的。

比如

#include <stdio.h>
int main()
{
    printf("%d\n", 3*4);
    
    return 0;
}

这个程序就是简单的计算3*4的输出,会输出12。


2 定义指针时做标识符。

在C语言中有指针的概念,在定义某个类型的指针时,会采用

TYPE *name;的形式。 具体说明在第三部分中一并叙述。


3做取值运算符。

对某个指针变量做*操作,表示取该指针指向地址中的值。

在这种情况下*位于所要取值的指针变量前。如*p。


比如

#include <stdio.h>
int main()
{
   int a=3;
   int *p = &a;//&为取地址 在这里的*是指针定义标识
    
    printf("a = %d\n", a);//输出a的值,为3
    printf("*p = %d\n", *p);//输出*p的值,这里的*是取值运算符。输出结果同样为3
    return 0;
}
Nick_Jiang
2008-03-11 · TA获得超过293个赞
知道答主
回答量:144
采纳率:0%
帮助的人:45.7万
展开全部
*是指针运算符(不是取地址运算符!)
有没有加*是不一样的``
char *s,加*表示变量s是一个指向字符型的指针变量,不加*(char s)表示变量s是一个字符型变量

*(s+i)=*(s+n-i)表示它们指向的存储单元内容相等,即s+i存储内容和s+n-i存储内容相等。而(s+i)=(s+n-i)则表示它们表达式的值是相等的,即s+i与s+n-i值相等。

不能简单的把加*看成就是指针,因为它同时还是一个运算符,虽然s是一个指针,但加*时它表示的是字符值,不加*时可以看成是地址值,比如:假设s值为0x25,*s值为0x41,则运行s=s+1后*s不一定等于0x41,假设0x26存储内容是0x42即字母B,则s=0x26,*s='B';而运行*s=*(s+1)后则s=0x25,*s='B'.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ae692cc85
2008-03-11 · 超过23用户采纳过TA的回答
知道答主
回答量:145
采纳率:0%
帮助的人:0
展开全部
char *s,其中s表示指针,指针可以接受字符和字符串的赋值
例如:
char *s;
s="abc";
其中s="abc"表示把abc所在的地址赋给了s,而*s也就是指向了abc所在的地址,也有了值“abc”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaigangvvv
2008-03-11 · TA获得超过348个赞
知道小有建树答主
回答量:1190
采纳率:0%
帮助的人:583万
展开全部
星号可以声名指针类型变量,也可取的指针变量的值,提高了程序的效率
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孝子之后孙仲谋0
2008-03-11 · TA获得超过1043个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:43.7万
展开全部
开始的星号是定义指针没有问题相当于一个字符数组a[]
后面的其实是将指针中的内容取出再赋值

*(s+i)=*(s+n-i)相当于
a[i]=a[n-i]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式