c语言中"*s"这是什么意思
*s表示s是一个指针
另外,指针跟地址不是一个概念。
指针是一种变量类型,这种变量类型的值是地址。
就像int变量的值是整数一样。你可以说数字5是整数,但是不能说5是一个int变量。
扩展资料:
指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如C语言。
高层的语言如Java一般避免用指针,而是引用,指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出,C++标准中规定,“指针”概念不适用于成员指针(不包含指向静态成员的指针)。
参考资料来源:百度百科-指针 (编程语言中的一个对象)
取决于在scanf中使用还是在printf中使用。
在scanf中使用,则添加了*的部分会被忽略,不会被参数获取。
例如:int a,b;char b[10];scanf("%d%*s",&a,b);输入为:12 abc那么12将会读取到变量a中,但是后面的abc将在读取之后抛弃,不赋予任何变量(例如这里的字符数组b)
在printf中使用,表示用后面的形参替代的位置,实现动态格式输出。
例如:
printf("%*s",10,s);/意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,这里等同于printf("%10s",s);/
扩展资料:
C语言%*s用法
1、在scanf中使用,则添加了*的部分会被忽略(跳过),不会被参数获取。
例如:
int a,b;
char b[10];
scanf("%d%*s",&a,b);
输入为:
12 abc
那么12将会读取到变量a中,但是后面的abc将在读取之后抛弃,不赋予任何变量(例如这里的字符数组b)
用*和扫描集配合,可以从输入中只选出需要的内容,而忽略其余的东西。
另外,也常用于清空缓冲区。
2、在printf中使用,*表示用后面的形参替代*的位置,实现动态格式输出。
例如:
printf("%*s", 10, s); /*意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,这里等同于printf("%10s", s);*/
printf("%.*s\n",int,str) ;
// %.*s 其中的.*表示显示的精度 对字符串输出(s)类型来说就是宽度
// 这个*代表的值由后面的参数列表中的整数型(int)值给出
例如:
printf("%.*s\n", 1, "abc");// 输出a
printf("%.*s\n", 2, "abc");// 输出ab
printf("%.*s\n", 3, "abc");// 输出abc >3是一样的效果 因为输出类型type = s,遇到'\0'会结束
另外,指针跟地址不是一个概念。
指针是一种变量类型,这种变量类型的值是地址。
就像int变量的值是整数一样。你可以说数字5是整数,但是不能说5是一个int变量
比如
int *s;
int a = 10;
s = &a;
&a计算出来是地址,并把这个地址赋给指针变量
就像int a = 5;把5这个整数赋给整型变量
谭浩强的那本书就没把指针跟地址区别开,误人子弟。
比如。
int *s;
int a = 10;
s = &a;
*s这个时候指向的是int类型的变量a,*s等于a的值,也就是10.
那“s”是不是指的是地址
不是,s是一个指针变量,s的值等于变量a的地址。
2019-03-25
定义中表示这是个指针 例 int *p=NULL;
语句中表示解引用,即取得指针所指变量的值
例 int a=0,*s=&a;
*s即取出指针s所指向变量a中值*(&a),即0