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

来源:百度知道 编辑:UC知道 时间:2024/05/18 05:10:34
char *s ,*(s+i)=*(s+n-i); 比如这二个加不加星号都是一样的嘛!
我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义!

*是指针运算符(不是取地址运算符!)
有没有加*是不一样的``
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'.

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


1 做乘法运算符使用。

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

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

比如

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

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


2 定义指针时做标识符。

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

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


3做取值运算符。

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

在这种情况下*位于所要取值的指