.c文件的编译和执行
- 编译
gcc -o 生成文件名 .c文件名
gcc .c文件名 -o 生成文件名
使用-o选项就可以生成指定名称的可执行文件
gcc .c文件名
默认生成一个a.out的文件
- 执行
./可执行文件
共享文件夹
- 一般使用Windows编辑源代码,使用Linux进行编译和执行,这时候就要进行交互
- 如何进行交互?
使用网络,smb服务器(现在不怎么常用)
使用共享文件夹
- 共享文件夹的创建
- 首先要安装增强功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ekFeqHfd-1577786732784)(en-resource://database/8838:1)]
安装总是无法发送虚拟光驱……到虚拟电脑?
这个时候要弹出光驱然后再次点击安装增强功能就OK了
如何弹出?(19的在没有虚拟光驱的图标,所以要这样做)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnV2Vyp7-1577786732786)(en-resource://database/8840:1)]
那个移除虚拟盘就是,不过要先勾选上Ubuntu……那个虚拟盘然后移除才有用
点击安装时候等待,安装完成之后自动重启,并且虚拟盘还会回来
对于16的Ubuntu,我们只需要
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5vvkBTh-1577786732790)(en-resource://database/11042:0)]
点击弹出光驱,然后会有提示输入root密码,然后等待安装成功即可,注意:重启之后,增强功能才有效
- 在Windows下新建共享文件
- 在virtualbox下添加共享文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SolZD4Zj-1577786732792)(en-resource://database/8845:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zDstkJKe-1577786732797)(en-resource://database/8847:1)]
点击添加即可,记得勾选<自动挂载><固定分配>,这个是为了虚拟机在重启之后还能看到共享文件夹
- 在虚拟机下root可以使用共享文件夹,路径:/media/sf_110_embed
进阶
基本数据类型
- 基本类型:char short int long float double
- 复合类型:数组,结构体,共用体,类
内存占用和sizeof
数据类型就好像一个个模子
全局变量
- 普通全局变量:可以在各个文件中使用,但是要确保不能有重名的全局变量
- 静态全局变量:只能在本文件中使用,所以在别的文件中命名是就不用担心是否会和其他文件中的静态全集变量重名
- extern(跨文件引用全局变量)
局部变量和全局变量的对比
- 没有初始化,则局部变量的值是随机的,而全局变量的值是默认为0.
- 范围上:全局变量具有文件作用域,而局部变量只有代码块作用域。
- 周期上:全局变量是在程序开始运行之前的初始化阶段就诞生,到整个程序结束退出的时候才死亡;而局部变量在进入局部变量所在的代码块时诞生,在该代码块退出的时候死亡。
- 分配位置:全局变量分配在数据段上,而局部变量分配在栈上。
常量
- const 关键字
const int I= 14
意思是i是一个常变量,i的值不能再改变,具有常量的特性,14这个常量用i来表示,又有变量的特质,因此叫做常变量
- const和指针的4种结合方式
const int *p
首先p是一个指针,其次p指向整型数据,且该整型数据是一个常量
int const *p
首先p是一个指针,其次p指向整型数据,并且该整型数据是一个常量
int *const p
p是一个指针,指针指向int数据,p本身是一个常量,p所指向的是一个变量
const int *const p
p首先是个常量其次它才是个指针,并且指向整型常变量
记忆:const在*之前,就表示const作用于p所指的变量;比如const int *p
const在*之后,那么指针首先是个常量才是指针,但是p所指向的未必是常量
枚举常量
enum
多文件
- 复杂的c语言项目是由多个c文件构成的,譬如一个项目中含有2个c文件(a.c b.c),编译:gcc a.c b.c -o ab
- 执行:./ab
- 函数不能重名
函数三要素:定义、声明、调用
头文件
- <>用来包含系统自带的头文件
- ""用来包含项目目录中的头文件,一般是我们自己写的
- 防止重复包含头文件
#ifndef __A_H__
#define __A_H__
//跟32写程序是自己定义一些头文件是不是很类似
#endif
- 写程序时,最好不要把变量定义在头文件里,因为头文件被多个源文件包含使,就会出现重复定义的问题,全局变量的定义就应该放在某个源文件中,然后再别的源文件使用是,使用extern声明
指针
指针与+±-
- *p++,相当于*(p++),p想和++结合,然后p++整体在进行取值(*)运算
相当于*p;p+=1; 因为++这个运算符就是先进行其他再++啊
- *++p,相当于p先++,然后取值
- (*p)++, p先取值,然后这个值++(要先完成打印)
- ++(*p),p先取值,然后这个值++(完成++后再打印)
- 注意:int x = {0,2,4}
- 结果是: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4y91GNN-1577786732802)(en-resource://database/8849:1)]
- 对于打印函数来说,取出值就可以打印了
来源:CSDN
作者:郭和朋
链接:https://blog.csdn.net/weixin_42759357/article/details/103787287