学习C(一)

C基础知识

  1. linux中所有的shell指令都是针对当前工作目录的文件。如果终端所处的目录与需要操作的文件所在的目录不一致时,需要为需要操作的文件名前加上详细的路径信息,这个路径信息可以是绝对路径也可以是相对路径。
      绝对路径:绝对路径的起始点一定是根目录。
      相对路径:相对路径起始点为当前工作目录。
  2. vim的配置:
      使用vim ~/.vimrc在家目录下创建一个vim的配置文件。
    内部配置:
      syntax on
      set mouse=a
      set nu
      set tabstop=4
      set cursorline
      set ruler
      set autoindent
  3. 编译及运行一个c语言程序:
      gcc 待编译.c文件名
    成功编译后生成一个默认的名为a.out的可执行文件
    使用./可执行文件名执行一个可执行文件。./可以替换成详细的路径
  4. 计算内存空间:
      1gb = 1024 mb
      1mb = 1024 kb
      1kb = 1024 byte(字节)
      1byte = 8bit(位)
    bit是内存的最小单位:一个bit只能存放0或者1
      一个整型数据,在64位/32位的计算机c语言系统,占据4个字节内存大小,也就是说一共有32位可以用来存放0/1二进制数
      计算机会为每一个字节的内存空间编排一个独特的数据编号,该数据编号是一个十六进制的数(0x开头的数据就是十六进制),我们把这么一个十六进制的编号称为内存地址
      当访问一个数据的时候,无论采用何种形式进行访问,肯定只能访问到该数据的第一个字节的地址。
      系统如何在只拥有第一个字节的地址的情况,准确的判断之后多少个字节是属于该数据的,必须一同访问:根据该数据的数据类型进行判断,如果是整型,那么连带首字节地址一共需要访问4个字节。同理如果是字符型数据,则连带首字节地址一共需要访问1个字节。
  5. 常量:一个不能改变的固定的数值
    变量:用来保存一个数据的量,但是可以随时改变
    为了实现重复访问同一段内存空间上的值,通常采用两种手段:
      ①:完全记忆内存空间的地址
      ②:为该内存空间取一个别名,那么当我们访问该别名的时候,就等于访问了整段内存空间上的值。我们把内存空间的别名称为变量。
      变量的使用方式:变量名虽然可以随意选取,但是在一个变量使用之前,一定要告诉系统该变量的数据类型是什么类型。
      我们把告诉系统变量的数据类型这个过程称为声明变量。
    如何声明一个变量:
      数据类型+变量名;(我的笔记中所有’+'都代表代码中的空格)
  6. 在编程语言当中,一定要区分开表示数值相等的符号与赋值运算符=的区别。使用变量来保存一个数据,则在整个程序中,该变量只会有一份

变量声明与初始化

#include<stdio.h>

int main(){	
	int a = 5;//声明变量a,并将他初始化成5
	/*
		以上代码中,=号并不代表=号两侧的数据大小相等
		这里的=都不能构成一个数学表达式:
			什么是数学表达式:数学表达式最大的特点就是:该表达式总是能得到一个对应的数值。例如2+3即使一个数学表达式,他得到的结果就是5,2>3同样也是一个数学表达式,他得到的结果就是0
		这里的=我们必须看做一个操作:读取等号右侧的值,读取完成后写入等号左侧的数据当中。
	*/
	//5 = 6;这句代码是错的,因为6是常量,他可以读取,但是5也是常量,他不能写入,所以不能放在等号的左侧。
	return 0;
}

while(1);死循环函数

#include<stdio.h>

int main(){
	printf("hello world\n");
	/*
		printf函数会将字符串中的内容输出到标准输出流上(标准输出流即终端)
		字符串:由若干个字符拼接而成的数据
			c语言中:使用''括起来的内容,就是单个字符
					使用""括起来的内容,就是字符串
	*/
	/*
		在编程中,总想/总会使用到某些不可见字符,为了使用这些不可见字符,我们人为为这些不可见字符编排了特殊符号,我们称这些特殊符号为转义字符:
		tab(缩进功能):使用'\t'表示
		enter(换行功能):使用'\n'表示
		backspace(退格功能):使用'\b'表示
			\b 仅仅退格,并不会删除数据
	*/
	while(1);
	return 0;
}

fflush(stdout);手动刷新函数

#include<stdio.h>
#include<unistd.h>
int main(){
	printf("hello world\b");
	fflush(stdout);
	while(1);
	return 0;
}

printf函数:将()内的字符串输出到终端上。
但是,其实printf是先将字符串输出到缓存区内(中间商),然后只有当缓存区刷新时,缓存区的内内容才会出现在终端上。
如何刷新printf的缓存区:
①当遇到’\n’的时候,缓存区刷新
②当缓存区满时刷新
③当程序结束时刷新
#include<unistd.h>使用fflush(stdout);手动刷新。


sleep();休眠函数

/*
	保证程序不会结束
	先在终端上打印__-__-__
	然后间隔2秒后,将第一组__改成10,也就是终端会从__-__-__变成10-__-__
	再间隔2秒后,将第二组__改成20,也就是终端会从10-__-__变成10-20-__
	再间隔2秒后,将第三组__改成30,也就是终端会从10-20-__变成10-20-30
*/
#include<stdio.h>
#include<unistd.h>

int main(){
	printf("__-__-__");
	fflush(stdout);
	sleep(2);
	printf("\033[8D10\033[1C");
	/*
		\033[nD,代表光标向左移动n个位置
		\033[nC,代表光标向右移动n个位置
		\033[nA,代表光标向上移动n个位置
		\033[nB,代表光标向下移动n个位置		
	*/
	fflush(stdout);
	sleep(2);
	printf("20\033[1C");
	fflush(stdout);
	sleep(2);
	printf("30");
	fflush(stdout);
	while(1);
	return 0;
}

#include<unistd.h>使用sleep();


%d 占位符

#include<stdio.h>

int main(){
	int a = 10;
	int b = 15;
	printf("a = %d,b = %d\n",a,110);
	/*
		如果想在printf中输出一个变量的值,那么只能在字符串中放入字符串能够理解的变量。
		我们把字符串中的变量称为格式占位符:
			使用 :%d来对所有的整型数据进行占位
	*/
	return 0;
}


scanf();标准输入函数

#include<stdio.h>

int main(){
	/*
		printf是将内存中的数据输出到终端上。
		那么如何将终端上输入的数据保存到内存中:通过scanf函数
	*/
	int a = 0 , b = 0;
	scanf("%d%d",&a,&b);
	printf("a = %d,b = %d\n",a,b);
	/*
		scanf函数,用来保存终端输入数据的变量,必须使用&来修饰
		&:取地址符号,他也是一个运算符,被&运算符修饰的变量与&形成了一个数学表达式。该表达式的结果为该变量所代表的内存空间的第一个字节的地址
		scanf的字符串中,尽量只写格式占位符。因为scanf是一个格式化的输入函数
	*/
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值