scanf中有缓冲读取区域 eg:输入123456enter
enter会转换成\n sacnf入读的是123456 要用getchar()消除\n;
int main()
{
int ch,n;
scanf("%d",&n);
if((ch=getchar())=='\n')
printf("yes");
return 0;
} 此代码的输出为yes
int main()
{
int ch,n;
scanf("%d",&n);
getchar();
if((ch=getchar())=='\n')
printf("yes");
return 0;
} 此代码用getchar()消除空格后不输出
字符串结束的标志 '\0'
eg;
char arr1[]="abc"
for (int i = 0; i < 10; i++)
{
if (arr1[i] == '\0')
{
printf("有\0");
break;
}
}
初始化数组 不给数组长度 计算出数组长度;
int main()
{
int arr[]={1,2,3,4};
int n=0;
n=sizeof(arr)/sizeof(arr[0]);
printf("%d",n);
return 0;
}输出结果为4;
stastic 为局部变量 能延长使用寿命
如下代码#include<stdio.h>
int sum(int a)
{
int b=0;
static int c=2;
b+=1;
c+=2;
return a+b+c;
}
int main()
{
int a=2;
for(int i=0;i<3;i++)
printf("%d\n",sum(a));
return 0;
}
此代码输出结果 7 9 11. b每次加1 c每次加2,但为什么sum每次就加二呢 b在使用一次后就被销毁了 而c作为局部变量生命周期长 一只能用。