别熬夜!
上周所提到的 getchar 和 scanf函数都为输入函数 从缓冲区获取和清理缓存区的问题,这周科班的同学们应该接触到了,比如这道题:
#include<stdio.h>
int main()
{
int i,n,letter,blank,digit,other;
char ch;
letter=blank=digit=other=0;
scanf("%d",&n);
ch = getchar(); //获取字符
for(i=1;i<=n;i++){
ch=getchar();
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){
letter++;
}else if(ch==' '||ch=='\n'){
blank++;
}else if(ch>='0'&&ch<='9'){
digit++;
}else{
other++;
}
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
return 0;
}
注意,此处只能用getchar扫描字符,而不能用scanf,否则scanf则会一并扫描最后的回车
引入这个与我理解相同的人所描述的:
所谓行缓冲模式, 是指一个以回车键作为结束信号,从而结束接受键盘输入过程,并刷新键盘缓冲区,此时缓冲区的内容为 [ .....\n ]
当诸如getchar(),scanf()之类的函数调用时,首先要读取键盘缓冲区, 如果为空则进入行缓冲模式, 行缓冲结束后,依次读取相应字符,getchar()取一个,scanf()按格式取, 之后返回. 如果不空则依次读取相应字符后,之后返回.
初识 地址
Pa 将存放地址的变量 叫做指针变量
&取地址操作符
*pa 解引用操作符,通过pa的地址找到a *是说明pa是指针变量
可通过*pa=某 重新定义a的值
#include <stdio.h>
int main ()
{
int a = 10;
printf("%p\n",&a);
int *pa = &a;
return 0;
}
以下是我偶然找到的变量指针和地址的总结,在此一起分享下
以上仅是初识,还需要后续的实践
有错误请指教!