C语言中{}作用

2024-12-27 12:34:48
推荐回答(5个)
回答1:

取决于在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'会结束  

回答2:

花括号"{" "}"主要是为了表示一段代码是一个部分,。主要有以下集中用法
1.函数
int func() { ...} 此处的花括号表示将这个部分括起来,是开始和结束的标志
2.宏定义
#define ADD(X,Y) { X+Y;} 只是单纯的把整个部分包含起来
3.数组赋值
int a[] = {1,2,3};
4.函数内部使用
用于特定语法 如 if(){ ..} while(..){ ...} 等。
希望能帮到你哦!

回答3:

取决于在scanf中使用还是在printf中使用。

  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);*/

回答4:

加上这个星号的作用是将对应的输入忽略,不赋予变量,例如:

int a;
char b[10];
scanf("%d%*s",&a,b);

输入为:

12 abc

那么12将会读取到变量a中,但是后面的abc将在读取之后抛弃,不赋予任何变量(例如这里的字符数组b)

用*和扫描集配合,可以从输入中只选出需要的内容,而忽略其余的东西。
另外,也常用于清空缓冲区。

回答5:

例如
int a[10]={1,2,3,4,5,6,7,8,9};
int *p;
p=a;//是把数组中的第一个元素的地址赋给指针p
p=&a[4];//是把数组中的第五个元素的地址赋给指针p,[]运算符的作用是在数组首地址的基础之上偏移4个地址长度,得到第五个地址,然后赋给p