首页 > 其他分享 >c语言初学笔记3

c语言初学笔记3

时间:2023-10-22 12:00:54浏览次数:34  
标签:return 语言 int 笔记 -- 初学 操作符 printf main

这几天整理的比较慢,因为有一些是之前的东西在这里做再次批注和解释,更加详细一点

int Max(int x,int y)
{

	if(x>y)
		return x;
	else
		return y;
}
int main ()
{
	int num1=10;
	int num2=20;
	int max=0;
	max=Max(num1,num2);
	printf("max=%d\n",max);
	return 0;
}

上来就是之前函数的应用,两个数找最大值!

接下来是对上次笔记的补充,单目操作符~是对一个二进制进行按位取反!

int main()
{
	int a=0;//4个字节32bit位
	int b=~a;//b是有符号的整形
	//~--->按(2进制)位取反
	//000000000000000000000000
	//111111111111111111111111-->这个是~按位取反后得到的补码!!,因为第一位是1!为负数
	//原码,反码,补码倒退回去的到原码并输出!
	//由于第一位是1,为负数,而负数在内存中存储的时候,存储的一定是二进制的补码
	//111111111111111111111111补码变反码减一
	//111111111111111111111110反码变原码-->按位取反
	//100000000000000000000001原码-->第一位是表示符号,为负数
	printf("%d\n",b);//使用的,打印的是这个数的原码
	//
	return 0;
}
原码按位取反得到反码加一得到补码
-2
原码100000000000000000000010
反码111111111111111111111101
补码111111111111111111111110

还有++和--,分前置和后置

int main()
{
	int a=10;
	int b=a++;//后置++,先使用,再++
	int b=++a;//前置++,先++,再使用
	printf("a=%d b=%d\n",a,b);
	return 0;
}
int main ()
{
	int a=10;
	int b=a--;
	int b=--a;//与上面同理
	printf("a=%d\nb=%d\n",a,b);
	return 0;
}

还有(类型)这种强制类型转换

int main()
{
	int a=(int)3.14;//(类型)强制类型转换
	//原来3.14是double类型
	return 0;
}//这些都是上节单目操作符的剩下内容
还有*  &这两个后面会讲到

上一章的关系操作符= <= == !=

逻辑操作符

逻辑操作符
int main()
{
	int a=3;
	int b=5;
//	int c=a&&b;
	int c=a||b;
	//真--非0
	//假--0
	//&&--逻辑与
	//||--逻辑或
	printf("%d\n",c);
	return 0;
}
相对简单一点!

条件操作符,三目操作符!

条件操作符
exp1?exp2:exp3三目操作符
int main()
{
	int a=10;
	int b=20;
	int max=0;
	max=(a>b?a:b);
//	if(a>b)
//		max=a;
//	else
//		max=b;
	printf("%d",max);	
	return 0;
}

逗号表达式

逗号表达式
exp1,exp2,exp3
int Add(int x,int y)
{
	int z=0;
	z=x+y;
	return z;
}

下标引用操作符,函数调用操作符,这两个之前接触过不细讲

int main()
{
	int arr[10]={0};
	//arr[4];//[]--下标引用操作符
	//即访问其下标为4的数,根据前面0,1,2,3,4
	int a=10;
	int b=20;
	int sum=Add(a,b);//()-->函数调用操作符
	printf("sum=%d\n",sum);
	return 0;
}

还有.   ->结构成员!也是下一章讲到

常见关键字

c语言初学笔记3_反码

int main ()
{
	auto int a=10;//局部变量-自动变量一般省略掉
	return 0;
}
break用在循环和switch case
goto后面介绍
register寄存器关键字
计算机存储数据时
寄存器,高速缓存,内存,硬盘(大小-->变小)
cpu-中央处理器,从更高的速度的寄存器拿更快!
int main()
{
	register int a=10;//把a定义成寄存器变量
	
	return 0;
}

signed和unsigned

int main()
{
	int a=10;
	a=-2;
	//int 定义的变量是有符号的
	//signed int;真正的是这个只是省略掉了
	//unsigned int;无符号数
	return 0;
}

void test函数和static

void test ()//test函数
{
	static int a=1;//a是一个静态的局部变量
	//static 修饰局部变量
	//局部变量的生命周期变长,不再用完就销毁
	//static 修饰全局变量,举个例子,在最下面和另一个文件
	a++;
	printf("a=%d\n",a);
}
int main ()
{
	int i=0; 
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}

struct结构体关键字--下一章说!

typedef类型定义

int main()
{
	//int float;//err
	//typedef-类型定义-类型重定义
	typedef unsigned int u_int;
	unsigned int num=20;
	u_int num2=20;//遇上面一模一样没有任何区别
	return 0;
}

union-联合体or共用体

void-无or空

volatile-比较少用而且难,操作系统再说

extern声明外部函数!细讲

#include<stdio.h>
#include"abc.c"
int main()
{
	extern int g_val;
	//extern-->是用来声明外部符号的//看另外一个笔记
	printf("g_val=%d\n",g_val);
	return 0;
}

//新建一个ctrl+n,命名位abc。c与上面的项目连接起来!
#include <stdio.h>
int g_val=100;

我们之前学过#define定义的标识符常量

现在学习它另一个功能

#define可以定义宏-带参数(在标识符常量基础上加的)

#define MAX(x,y) (x>y?x:y)
int main ()
{
	int a=20;
	int b=10;
	//宏的方式
	int max=MAX(a,b);
	printf("max=%d\n",max);
	return 0;
}//简单了解即可后期再详细了解!

指针!!!!!(important)

8bit=1byte

1024bte=1kb

以此类推

划分一个一个空间,访问空间就需要地址

32位-->32根地址线/数据线,一旦通电就有正电和负电之分(分别用1和0来表达)

例如00000000000000000000000000000000,总共有2^32个,把它作为内存编号就是有2^32个内存编号

从上面我们了解到两个点就是如何产生地址 以及一个空间就是一个字节(而1个bit位不行)

int main ()
{
	int a=10;//4个字节
	//&a//取地址
	//p=&a;//有一种整型变量是用来存放地址的-指针变量
	//定义方式
	int* p=&a;
	//printf("%p\n",&a);
	//printf("%p\n",p);
	//存地址就是为了有朝一日可以从p找到a,但是从p如何找到a呢?
	*p;//*-->解引用操作符
	*p=20;
	printf("a=%d\n",a);
	//printf("%p\n",&a);//%p-->打印地址000000000065FE1C
	return 0;
}

int main ()
{
	char ch='w';
	char*pc=&ch;
	*pc='a';
	printf("%c\n",ch);
	return 0;

}

总结上述,指针用法以及定义方式

int a=10;//创建了一个变量a,有自己的地址
	int*p=&a;//创建了一个p空间,这个空间放的是a的地址
	*p=20;返回到a地址,重新定义

图示

c语言初学笔记3_补码_02

指针的大小

在32位平台一个指针变量的大小就是32bit=4个字节

int main ()
{
	char ch='a';
	char*pc=&ch;
	printf("%d\n",sizeof(pc));//64位!8个字节
	
	return 0;
}

以上就是这个星期了解的全部内容,包括对之前单目操作符的再补充,和对条件操作符的认识,关键字的初步探索,为后面的结构体做准备,最重要就是对指针初步认识(important)

标签:return,语言,int,笔记,--,初学,操作符,printf,main
From: https://blog.51cto.com/u_16284199/7975289

相关文章

  • ABBAC900F学习笔记326:freelance2019SP1作为OPC DA SERVER,WINCC7.5SP2作为OPC DA CLIEN
    昨天练习了ABB的OPCDA通过寻,在同一台计算机上实验的。今天测试局域网上freelance2019SP1作为OPCDASERVER,WINCC7.5SP2作为OPCDACLIENT通讯。测试在昨天的ABB练习程序基础上进行。1.freelance2019SP1作为OPCDASERVER,配置DCOM,参考前面WINCC作为DASERVER的配置方法WINDO......
  • 防火墙命令学习笔记
    标准IP访问表和扩展IP访问表,区别主要是访问控制的条件不一样。标准IP访问表只是根据IP包的源地址进行标准IP防火墙标准访问控制规则格式:access-listlist-number{denylpermit}source[source-wildcard][log]而扩展IP访问控制规则的格式是:access-lis1ist-number{denylper......
  • 大语言模型LLM-三种模型架构
    架构:由Transformer论文衍生出来的大语言模型,主要有三种模型架构预训练目标:FLM,PLM,MLM调整:微调:Transformertransfomer可以并行地计算?  transformer中encoder模块是完全并行的,而decoder不是完全并行的。模型结构  使用原文表达如下:theencodermapsaninputsequence......
  • 20211105李宜时《信息安全系统设计与实现》第六周学习笔记
    Ubuntu学习笔记:Unix/Linux进程管理相关基础知识在Ubuntu学习Unix/Linux进程管理之前,需要了解以下基础知识:进程:进程是正在运行的程序的一个实例。每个进程都有一个唯一的进程标识符(PID)。进程状态:进程可以处于运行、睡眠、停止、僵尸等不同状态。进程调度:操作系统负责安......
  • ABBAC900F学习笔记324:WEB页面访问WINCCweb服务器
    这一篇学习笔记我在新浪博客记录过,地址是ABBAC900F学习笔记324:WEB页面访问WINCCweb服务器_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍。前段时间测试了一下WINCC7.5SP2web发布功能,并且在本机和远程计算机上IE浏览器访问成功。今天结合一下以前的练习,做ABBFRE......
  • ABBAC900F学习笔记325:FREELANCE2019SP1的OPC练习1
    这一篇博客我爱新浪博客发表过,地址是ABBAC900F学习笔记325:FREELANCE2019SP1的OPC练习1_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍今天在家做一下freelance2019SP1的OPC通讯练习。新建一个freelance项目,插入硬件和软件、OPC网关、OS等,按照以前的练习配置资源......
  • 信息安全系统设计与实现 学习笔记6
    Unix/Linux进程管理多任务处理同时执行几个独立的任务进程在操作系统中,任务也称为进程。进程是对映像的执行。PROC结构体多任务处理动态进程创建进程终止休眠和唤醒实现进程同步、进程关系二叉树的形式实现家族树、父进程等待子进程上下文切换进程处理UNIX/LINUX......
  • 20211128《信息安全系统设计与实现》第三章学习笔记
    一、任务内容自学教材第10章,提交学习笔记(10分)1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分) “我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏......
  • 《Unix/linux系统编程》教材第3章学习笔记
    |第3章|Unix/Linux进程管理多任务处理一般来说,多任务处理指的是同时进行几项独立活动的能力。在计算机技术中,多任务处理指的是同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操......
  • Linux课程笔记
    Linux基础命令Linux的目录结构/,根目录是最顶级的目录了Linux只有一个顶级目录:/路径描述的层次关系同样适用/来表示/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txtls命令功能:列出文件夹信息语法:ls[-l-h-a][参数]参数:被查看的文件夹,不提......