C语言入门(1)

使用虚拟机终端进行C语言的入门学习

一,虚拟机的使用

1.1 快捷键

放大终端 ctrl shift +

缩小终端 ctrl -

清屏 ctrl L(被清除内容其实在界面上方可滚轮找回)

历史命令 上下箭头(重要!!!能很大程度加快效率)

1.2Linux命令

用户名:hq(默认一般与主机名同为ubuntu)     whoami(此为输入问系统用户名意义不大)

主机名:Ubuntu     hostname

:$中间位置 当前路径 默认在家目录~

查看当前路径:pwd

绝对路径:从根目录开始逐层向下查找 /home/hq/a/b/c

相对路径:以当前位置为参照

$:普通用户

root:超级用户(两种用户家目录位置不同)

补充:Linux中一切皆文件,文件类型7种 bcd-lsp(重点,需背)

b:块设备文件 /dev

c:字符设备文件

d:目录文件 文件夹

-:普通文件 .c .h .txt

l:链接文件 <LinuxC高级>

s:套接字文件 <网络编程>

p:管道文件 <IO>

其中有俩特殊位置:家目录(类似桌面),符号为~;根目录(我的电脑C盘/D盘之类),符号为 /。

新建

新建文件:touch 文件名.后缀

新建文件夹:mkdir 文件夹名字

相同路径下:

新建同名文件夹:会报错

文件:更新文件时间戳

相同路径下,同时新建多个文件/文件夹: 名字中间用空格隔开

新建多层嵌套文件夹:mkdir a/b/c -p 

查看

ls 查看当前路径下所有内容(文件名)

ls -a 查看当前路径下所有内容,包括隐藏内容

ls -l 查看当前路径下所有内容de详细信息

扩展:ls -l test.c 查看test.c文件的详细信息

  cat test.c 查看文件test.c的内容

head test1.c在终端查看文件内容,默认查看前十行

head -n test1.c 在终端查看文件内容de前n行

tail test1.c在终端查看文件内容,默认查看后十行

tail -n test1.c 在终端查看文件内容de后n行

-rw-rw-r-- 1 hq hq 0 7月 1 10:52 file1.c

文件类型 权限 链接数 用户名 组名 大小 修改时间 文件名

rw-rw-r-- 文件权限 三个一组 共9个,每组分别决定自己 组内 其他的权限

rwx:可读可写可执行 rw-:可读可写不可执行

rwx  rwx  rwx

自己 组内 其他

权限值:r:4 w:2 x:1 -:0

修改文件/文件夹权限:chmod 777 file1.c(3个7分别代表3组的权限值)

切换

下一级: cd 文件夹名字

上一级: cd ..

当前: cd .

上一次: cd -

根目录: cd /

家目录: cd ~ 或 cd /home/hq 或 cd 或 cd #

复制

文件: cp 要复制的文件 目标地址(复制目标有内容会被覆盖)

文件夹:cp -r 要复制的文件夹 目标地址

cp和mv区别:

cp之后源文件还在;mv之后源文件不在

重命名:cp -r 要复制的文件夹 目标地址/新名字

使用cp重命名,源文件还在

移动

mv 要移动的文件/文件夹 目标地址

重命名:mv 要移动的文件/文件夹 目标地址/新名字

删除

文件: rm 文件名

文件夹:rm -r 文件夹名字

-f 强制删除

扩展:rmdir 只能删除空目录

打开终端

  1. 直接点击
  2. ctrl shift n 打开终端,路径在当前文件夹
  3. ctrl alt t 家目录

关闭终端

  1. 直接点击
  2. ctrl d
  3. exit

1.3vi编辑器

打开vi编辑器 vi test1.c 进入编辑器,默认是命令行模式输入aioAIO任意一个进入插入模式(当前路径无文件会新建文件,有则直接打开)

三种模式:

命令行模式:复制、粘贴、删除、光标移动等

插入模式:编辑代码

底行模式:保存(w)、退出(q)、复制、分屏、查找、替换、强制退出为q!(通常用于防止误

操作)

命令行:

复制 yy nyy(光标选中y n:行数 复制几行)

删除(剪切) dd ndd

粘贴 p

撤销 u

反撤 ctrl r

光标移动首行 gg

光标移动最后一行首行 G

光标移动行首 0

光标移动行尾 $

插入模式 i o a I O A

底行模式:

指定行复制 5,10y 复制5-10行

指定行删除 5,10d

保存 w

退出 q

保存并退出 wq

强制 !

vsp 分屏本文件

vsp 文件名 分屏打开另外一个文件

查找 /找的东西

替换 s/a1/a2 光标所在行的第一个a1替换成a2

s/a1/a2/g 光标所在行的所有a1替换成a2

%s/a1/a2/g 改变全文

1,$s/a1/a2/g 改变全文

设置行号 set nu

取消 set nonu

取消高亮 nohl

#include <stdio.h>  函数库	
// #开头  预处理
		// .h文件  头文件   
			//  < .h>  系统配置文件   /usr/include
			//	" .h" 用户新建的头文件(一般在当前文件夹里)
int main(int argc, const char *argv[])  
//main主函数,程序的入口;一个工程中主函数有且仅有一个
		// 扩展:命令行参数 argc 命令行输入字符串的个数
						// argv 存储命令行输入的字符串
{
	printf("hello world\n");
	return 0;
		// 主函数中的return,是主函数的结束标志  0整数  int
		// 函数的返回值要和函数的数据类型保持一致;不要返回值,函数数据类型可以定义成void
	printf("hello world\n");
	printf("hello world\n");
}
用vscode 编译器打开

终端:code 文件夹名字

gcc编译器

简写

gcc test.c (编译文件,生成a.out)

./a.out(执行)

gcc test.c -o test(可执行文件名,及自定义文件名)

./test

全流程(需背)

预处理:

展开头文件,替换宏定义,删除注释

gcc -E test.c -o test.i

编译:

检查语法问题,有错报错,没有则继续运行生成汇编文件

gcc -S test.i -o test.s

汇编:

生成一个不可执行的二进制文件

gcc -c test.s -o test.o

链接:

链接库函数,最终生成二进制可执行文件

gcc test.o -o test(可执行文件名)

运行:./test

1.4计算机的存储单位及数据表示

计算机的存储单位 1024(标准) 1000(商家可能使用,故有时候会有差距)

计算机最小存储单位 位bit 字节byte

1字节=8位 位:0 1

1KB=1024B 1024

1MB=1024KB

1GB=1024MB

1TB=1024GB

数值型数据

二进制 0 1 

八进制 0-7

十进制 0-9

十六进制 0-9 a-f 

a

b

c

d

e

f

10

11

12

13

14

15

非数值型数据

非数值型数据实际应用,操作的ASCII码值

man手册 一般用来查看一些命令或函数的用法

终端输入:man man

man手册查看ASCII码表:

char字符型    ' '包裹一个字符

'\0'                   0 字符串结束标志

'\n'                   10 换行

SPACE            32 空格

'0'                     48

'A'                     65

'a'                     97

'2'-48=2 48--->'0'

'A'+32='a'

\转义字符 'n'字符n '\n'换行

printf("a\n");//输出字符a

printf("%c\n",50);//输出’2‘,十进制ASCII码

printf("%c\n",062);//输出’2‘,八进制ASCII码

printf("%c\n",'\101');//输出’A’,八进制ASCII码,但0在数字中间无法识别故加\

1.5词法符号

运算符 关键字 标识符 分隔符 标点符号

关键字(重要需背)

存储类型:auto static extern register

数据类型:int char float short long double signed unsigned

构造数据类型:struct enum union

分支:if else switch case default for do while go to break continue

其他:void const sizeof volatile return typedef

32位:4G 64位:2^48 虚拟内存空间

栈区:由系统自动开辟,自动回收 M

堆区:程序员手动开辟空间(malloc),手动回收(free)

全局区/静态区: .bss .data

常量区:char *p="hello"

标识符

在给变量、数组、函数等命名时, 遵循标识符的命名规则:

1)由字母、数字、下划线(_)组成

2)开头不能是数字

3)不能和关键字重名

4)见名知意

helloWorld:小驼峰命名(除第一个单词外,其他单词开头大写)

HelloWorld:大驼峰命名(每个单词开头大写)

运算符

算术运算符 逻辑运算符 位运算符 关系运算符 三目运算符 赋值运算符

 算术运算符

+ - * / % ++ --

/整数相除,结果会向下取整

int a=5/2;
printf("%d\n",a);			//2
========================
float a=5/2;// 5/2 已经运算结束赋值a为2然后定义为浮点数,故结果仍无小数点后数字
printf("%f\n",a);//2.000000			默认打印小数点后六位
				float b=2;
    			printf("%f\n",b);//2.000000,即提前定义可实现输出小数点后数字
==========================
float a=5.0/2;
printf("%f\n",a);	//2.500000
==========================
强制转换
float a=(float)5/2;   //强制转换只在当前这一行生效
printf("%.1f\n",a);			//2.500000		%.1f保留一位小数
	float b=5/2;
    printf("%f\n",b);		//2.000000

%取余 5%2==1 13%10=3

只能用于整数运算

++/--

i++;//i=i+1;

i--;//i=i-1;

b=i++ 则b=i i=i+1

    b=++i 则i=i+1 b=i

(-- 同,打印类似,括号无影响)

练习

1、

#include <stdio.h>
int main(int argc, char *argv[])
   {
   		int a = 10;
   		int b = a--;				
  		int c = a + b + 2;		
   		int d = (b--) + (++c); 
   		printf("%d\n",d);
   } 
   [单选题] *
   A. d = 31
   B. d = 32
   C. d = 33
   D.d = 34

解析

a= 10

b=a=10,a=a-1=9

c=a+b+2=9+10+2=21

d=(b=10)+(c+1)=10+22=32,b=b-1=9

故选B

9

D

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值