多组输入
int main()
{
//多组输入
int n = 0;
//while (scanf("%d", &n) == 1)
//{
// if (n)
// {
// printf("hhh\n");
// }
//}
while (scanf("%d", &n) != EOF)
{
if (n)
{
printf("mmm");
}
}
return 0;
}
数组
int main()
{
int arr[10] = { 0 };
for (int i = 0;i < 10;i++)
{
arr[i] = i;
}
for (int i = 0;i < 10;i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
操作符
1.计算操作符
+ - * / %(只能用于整数)
2.移动操作符
>> <<
3.位操作符
按位与 &
按位或 ^
按位异或 |
4.赋值操作符
+= = -= &= >>= <<=
5.逻辑运算符
int main()
{
int age = 30;
//逻辑与 &&
if (age > 20 && age<40)
{
printf("age");
}
//逻辑或 ||
if (age > 40 || age < 20)
{
printf("add");
}
return 0;
}
6.条件操作符(三目操作符)
int main()
{
int m = 0;
int a = 3;
int c = m < a ? a : m;
return 0;
}
sizeof的使用
强制转换
int m = (int)3.14;
逗号表达式(表达式依次从左向右计算,整个表达式的结果是最后一个表达式的结果)
int m=2;
int b=5;
int c=100;
int d=(m +=2,b=m-5,c=m+b);
常见关键字
auto(自动变量,一般会省略) break case char int float double unsigned (无符号) struct continue default short long extern(外部条件申明) union do const else enum for register (寄存器)return signed(有符号) sizeof goto static typedef (类型重命名) switch while
register int num = 100;//建议把100放在寄存器中
static的作用
静态变量和全局变量一经创建后,只有退出程序才会销毁。而局部变量是除了作用域就会自动销毁,被static修饰后就变成了静态变量,作用域不变。
全局变量具有外部连接属性,在其他源文件只要适当申明就可以使用(extern),而被static修饰后,外部属性变成了内部属性,只能在自己所在的.c文件中使用,影响了作用域
函数也具有外部连接属性,被static修饰后外部属性变成了内部属性,只能在自己所在的.c文件中使用,最终还是影响了作用域
static
//修饰局部变量
void test()
{
static int a = 1;//static修饰局部变量,使得局部变量出了作用域不会销毁,改变了生命周期,存储位置从栈区变成了静态区,作用域不受影响
a++;
printf("%d", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
//修饰全局变量
//修饰函数
//}
//函数在另一个源文件
int Add(int x, int y)
{
int z = x + y;
return z;
}
extern int Add(int x, int y);
int main()
{
int a = 10;
int b = 20;
int sun = Add(a, b);
printf("%d", sun);
return 0;
}
#define定义常量和宏 (定义好常量后就不能修改)
#define M 100
#define STR "hello bit"
#define MAX(x,y) (x>y?x:y)
int main()
{
printf("%d\n", M);
printf("%s\n", STR);
int a = 10;
int b = 20;
int m = MAX(a, b);//int m= (a>b?a:b);
printf("%d\n", m);
return 0;
}
指针
1.内存
编号== 地址== 指针
程序是运行在内存中,1个内存单元是1字节,1个内存单元是一个地址
int a = 10;
//像内存申请4个字节的空间存储10
int *pa =&a;//pa 是指针变量(存放地址的变量),类型是int*
//int 说明pa 指向的对象是int 类型的变量,而*则表明pa 是指针变量*;
*pa=20;//*是解引用操作符,可以改变a的值 a=20
2. 指针变量的大小
32位平台下地址是32个bit位,即4字节
64位平台下地址是64个bit位,即8字节
结构体(用来描述复杂类型)
struct student
{
char name[20];
int age;
char id[5];
float score;
};
int main()
{
struct student s1 = { "zhangsan",20,20233,90 };
struct student* p = &s1;
printf("%s %d %s %f", s1.name, s1.age, s1.id, s1.score);
printf("%s %d %s %f", p->name, p->age, p->id, p->score);
printf("%s %d %s %f", (*p).name, (*p).age, (*p).id, (*p).score);
return 0;
}