C语言中为什么要加星号!
char*s,*(s+i)=*(s+n-i);比如这二个加不加星号都是一样的嘛!我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义!...
char *s ,*(s+i)=*(s+n-i); 比如这二个加不加星号都是一样的嘛!
我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义! 展开
我知道加星号表示指针!但是为什么要加呢?有没有特殊的意义! 展开
7个回答
展开全部
在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;
}
展开全部
*是指针运算符(不是取地址运算符!)
有没有加*是不一样的``
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'.
有没有加*是不一样的``
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'.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char *s,其中s表示指针,指针可以接受字符和字符串的赋值
例如:
char *s;
s="abc";
其中s="abc"表示把abc所在的地址赋给了s,而*s也就是指向了abc所在的地址,也有了值“abc”。
例如:
char *s;
s="abc";
其中s="abc"表示把abc所在的地址赋给了s,而*s也就是指向了abc所在的地址,也有了值“abc”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
星号可以声名指针类型变量,也可取的指针变量的值,提高了程序的效率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
开始的星号是定义指针没有问题相当于一个字符数组a[]
后面的其实是将指针中的内容取出再赋值
*(s+i)=*(s+n-i)相当于
a[i]=a[n-i]
后面的其实是将指针中的内容取出再赋值
*(s+i)=*(s+n-i)相当于
a[i]=a[n-i]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询