C语言学习——初识C语言(3)

  • 练习题
    1、求两个数的较大值
    2、写一个函数求两个数的较大值
int main()
{
	int a = 1;
	int b = 2;
	if (a > b)
	{
		printf("较大值是:%d\n", a);
	}
	else
		printf("较大值是:%d\n", b);
}
#include<stdio.h>
#include<string.h>
int  Max(int x, int y)
{
	 if (x > y)
		 return x;
	 else
		 return y;
}
int main()
{
	int num1 = 1;
	int num2 = 2;
	int max = 0;
	max=Max(num1, num2);
	printf("Max=%d\n", max);
	return 0;
}

补充知识
原码:直接按照正负写出的二进制序列
反码:原码的符号位不变,其他位取反得到
补码:反码+1
三者关系:原码符号位不变,其他位按位取反得到反码,反码+1得到补码
只要是整数,内存中存储的都是二进制的补码
负数一定存储的是补码
正数存储的是原码、反码、补码
例如:-2
10000000000000000000000000000010 ——原码
11111111111111111111111111111101 ——反码
11111111111111111111111111111110 ——补码

剩余操作符

关系操作符

大于等于 >= 小于等于<=
不相等 != 相等 ==

逻辑操作符

&&逻辑与
||逻辑或

int main()
{
	//c语言中 0表示假 ,非0就是真
	//&&逻辑与
	int a=3;
	int b=5;
	int d=0;
	int c=a && b;// 左边为a=3为真,右边b=5也为真。同时为真时,结果为真,c=1
	int e=b && d;//d为假。则 e=0
	printf("c=%d\n",c);
	return 0;
	
	//逻辑或|| 有一个为真,则为真
}

条件操作符

exp1 ? exp 2 :exp3
如果表达式1结果为真,表达式2要执行,而表达式2的结果为整体的结果
如果表达式1结果为假,表达式3要执行,而表达式3的结果为整体的结果

//例子
int main()
{
	int a=10;
	int b=20;
	int max=0;
	max(a>b ? a : b); //也称作三目操作符
}

下标操作符、函数调用操作符

int main(){
int arr[10]={ 0 };
arr[4];//[]下标引用操作符
return 0;}
int Add(int x,int y)   //Add函数名,x,y函数参数
{                      //函数体
		int z=x+y;
		return z;
}
{
	int num1=10;
	int num2=20;
	int sum=0;
	sum=Add(num1,num2);//()就是函数操作符

常见关键字

auto局部变量前都有,但可以省略、break、case、char、const、continue、do、double、else、enum(枚举)、extern、float、goto、if、register(寄存器关键字)、return、signed符号数、unsigned无符号、struct、union联合体、switch
注意:关键字不能与变量名冲突。

//部分关键字示例
int main()
{
	//typedef——类型定义——类型重定义(别名)
	typedef unsigned int u_int;
	unsigned int num = 20;
	u_int num2 = 20;
	return 0;
}
//static修饰局部变量,局部变量的生命周期延长
//出了作用域不再销毁了
void test()
{
	static int a = 1; //a为一个静态的局部变量
	a++;     //a=2
	printf("a=%d\n", a);//打印结果为2
}
int main()
{
	int i = 0;
	while (i < 5)
	{
		test();  //调用test函数
		i++;
	}
	return 0;
}
输出结果:2 3 4 5 6
//static修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法再使用。
//新建add.c
int g_val = 2023;//全局变量

//3_1.c
//static 修饰全局变量
#include <stdio.h>
int main()
{
	//extern-——声明外部符号
	extern int g_val;
	printf("g_val=%d\n", g_val);
	return 0;
}
输出结果:g_val=2023
//改变add.c文件
static int g_val = 2023;//全局变量
//出现错误,无法解析的外部符号
//static修饰函数,会改变函数的作用域,改变了函数的链接属性,使外部链接属性,变成内部链接属性。

#define定义标识符和宏

#deinfe 定义标识符常量

#include <stdio.h>
#define MAX 100
int main()
{
	int a = MAX;
		return 0;
}

#define定义宏——带参数

//函数的实现
Max(int x,int y)
{
	if(x>y)
		return x;
	else
		return y;
}
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
int main()
{
	int a=10;
	int b=20;
	//函数的方式
	int max=Max(a,b);
	printf("max=%d\n",max);
	//宏的方式
	max=MAX(a,b);
	//max=(a>b?a:b);
	printf("max=%d\n",max);
	return 0;
}

指针

内存是电脑重要的存储器,计算机中所有程序的运行都在内存中进行的。因此为了有效的使用内存,就把内存分成一个小的内存单元,每个内存单元的大小是1字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号成为内存单元的地址。
指针大小在32位平台是4个字节,64位是8个字节

#include <stdio.h>
int main()
{
	int a = 10;//向内存申请4个字节
	//&a;    //&取地址
	//printf("%p\n", &a);//打印地址
	int *p = &a;
	printf("%p\n",&a);
	printf("%p\n", p);
	*p;//*——解引用操作符
	//有一种变量是用来存放地址的——指针变量
	return 0;
}
输出结果:
00D5FDF4
00D5FDF4
int a=10;  //在内存中创建了个变量,取名为a
int *p=&a; //p中存放的是a的地址
//例子:
int main()
{
	char ch='w';
	char *p=&ch;
	*p='a';
	printf("%c\n",ch);
	return 0;
}
输出结果:a
//指针的运用
#include<stdio.h>

struct Book
{
	char name[20]; //c语言程序设计
	short price;//55
};
int main()
{
	//利用结构体类型创建一个该类型的结构体变量
	struct Book b1 = { "C语言程序设计,55" };
	//利用指针打印出书名和价格
	struct Book* pb = &b1;
	printf("%s\n", (*pb).name);
	printf("%d\n", (*pb).price);

	//简化指针打印
	printf("%s\n", pb->name);
	printf("%d\n", pb->price);
	//两种写法 
	//. 结构体变量.成员
	//-> 结构体指针->成员

	//
	/*printf("书名:%s\n", b1.name);
	printf("价格:%d\n", b1.price);
	b1.price = 15;
	printf("修改后的价格:%d\n", b1.price);
	return 0;*/
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值