c语言入门(笔记二)

 多组输入

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值