C语言小知识点 汇总6 scanf的使用
2016-10-08 09:36
239 查看
C语言小知识点 汇总6
知识点12:
用scanf输入字符串(s%)时为什么不需要&
Int a,b;
scanf("%d,%d",&a,&b);
Sum=a+b;
Printf(“sum is %d\n”,sum);
Scanf 函数的作用是输入a和b的值,&a和&中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。
那么在输入字符串时,为什么不需要&呢?
char s[10];
scanf("%s",s);
因为在c程序中,可以用两种方法访问字符串:
1、用字符数组存放一个字符串
2、用字符指针指向一个字符串
C中数组名就是数组首地址的意思,所以没必要再用&
取地址了
例:
char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释
1 s与&s都表示地址,且值相等。
2 s与&s类型不一样,s的类型为char *,&s的类型为char
(*)[10],即指向一行有10个字符的指针。
3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char
*)&s);
知识点12:
用scanf输入字符串(s%)时为什么不需要&
Int a,b;
scanf("%d,%d",&a,&b);
Sum=a+b;
Printf(“sum is %d\n”,sum);
Scanf 函数的作用是输入a和b的值,&a和&中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。
那么在输入字符串时,为什么不需要&呢?
char s[10];
scanf("%s",s);
因为在c程序中,可以用两种方法访问字符串:
1、用字符数组存放一个字符串
2、用字符指针指向一个字符串
C中数组名就是数组首地址的意思,所以没必要再用&
取地址了
例:
char s[10];
scanf("%s",s);
改为scanf("%s",&s);也正确,为什么?
求解释
1 s与&s都表示地址,且值相等。
2 s与&s类型不一样,s的类型为char *,&s的类型为char
(*)[10],即指向一行有10个字符的指针。
3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char
*)&s);
相关文章推荐
- C语言小知识点 汇总3 struct的使用
- C语言复习知识点汇总5--计算机二级(C语言)
- C语言学习知识点汇总,待续中...
- C语言复习知识点汇总6--计算机二级(C语言)
- C小知识点:C语言中不同类型数据所占字节数汇总
- 【知识点整理(java)】Java Thread简单使用注意点汇总(三)
- 详解C语言中scanf函数使用的一些注意点
- [C语言] 对于scanf()函数使用%d格式说明符无法读取字符的个人理解
- 杂记之C语言之函数scanf的使用
- C语言中的scanf的使用
- 【知识点整理(java)】Java Thread简单使用注意点汇总(四)
- 使用nodejs实现类似于C语言的scanf输入一个动态数组
- C语言复习知识点汇总7--计算机二级(C语言)
- C语言流程控制知识点汇总
- C语言小知识点 汇总1
- C语言复习知识点汇总1--计算机二级(C语言)
- C语言一些容易忘得知识点汇总
- C语言中scanf/fscanf 的%[]和%n说明符的使用方法
- C语言复习知识点汇总2--计算机二级(C语言)
- Linux C语言编程-Linux网络通信--Linux上使用curl来发送Http协议的报文---知识点总结+实例d