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

char *s ,*(s+i)=*(s+n-i); 比如这二个加不加星号都是一样的嘛!
我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义!

在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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-11
*是指针运算符(不是取地址运算符!)
有没有加*是不一样的``
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'.
第2个回答  2008-03-11
char *s,其中s表示指针,指针可以接受字符和字符串的赋值
例如:
char *s;
s="abc";
其中s="abc"表示把abc所在的地址赋给了s,而*s也就是指向了abc所在的地址,也有了值“abc”。
第3个回答  2008-03-11
星号可以声名指针类型变量,也可取的指针变量的值,提高了程序的效率
第4个回答  2008-03-11
开始的星号是定义指针没有问题相当于一个字符数组a[]
后面的其实是将指针中的内容取出再赋值

*(s+i)=*(s+n-i)相当于
a[i]=a[n-i]
相似回答