C语言基础

96
遛遛食
2018.10.19 15:04* 字数 863

终端编译运行c语言

编译:

gcc c语言文件

会在当前文件夹下生成一个a.out文件
运行:

./a.out

文件

在C语言中包含.c文件和.h文件。.h文件一般为函数声明部分,.c文件一般为函数实现。

文件引用、包含
include的作用, 是将include右边的文件拷贝到当前文件中。
include后面的 <> 和 "" 的区别:
如果使用<>代表会先从开发工具的编译环境中去查找,如果编译环境中没有找到, 那么会再去系统的编译环境中找。
如果使用""代表会先从当前文件所在的文件夹下面查找,如果在当前文件所在的文件夹下面没有找到, 那么就回去开发工具的编译环境中去查找,如果编译环境中没有找到, 那么会再去系统的编译环境中找。

C语言注意:

C语言中每一条语句后面都必须有;号
main函数中的return 0;可以写, 也可以不写
main函数前面的int可以写, 可以不写
main函数后面的()不可以省略
同一程序中只能有一个main函数

C语言使用:

打印:printf();
获取用户输入:scanf函数-scanf("格式化字符串", &变量);
sizeof:可以用来计算一个变量或一个常量、一种数据类型所占的内存字节数,sizeof是一个运算符, 不是一个函数,sizeof(变量/常量/数据类型);
char类型:不看怎么存, 只看怎么取。

数组

数组的符号是大括号“{}”。
数组长度要自己计算:length = sizeof(arr) / sizeof(arr[0]); //所有数据的字节数除以一个数据的字节数即为数据的个数。
数组不能先定义再进行一次性的初始化,只能初始化赋值。

字符串

char str[] = {}; char str[] = “”;
拼接:strcat(str1, str2, length);//把str2长度为length拼接到str1中。
拷贝:strncpy(str1, str2, length);//把str2长度为length拷贝到str1中。
比较:int res = strcmp(str1, str2);//取出字符串中的每一个字符进行逐个比较, 如果发现不相等就不会继续往下比较。
如果是数组保存字符串,是一个变量,
如果是指针保存字符串,是一个常量。

结构体

数组是用于保存一组相同类型的数据,结构体是用于保存一组不同类型的数据。

//定义
struct Person{
        char *name;
        int age;
        double height;
}

//初始化
struct Person female = {"mm",16,1.70};

struct Person male;
male.name = "cf";
male.age = 18;
male.height = 1.80;

struct Person sex;
sex = (struct Person){"gg",18,1.90};

struct Person liuliu = {.name='liuliu',.age=20,.height=1.85};

关键字

声明变量是一个外部全局变量,或外部函数
extern type name;
extern type funName(){};

声明变量是一个内部全局变量,或内部函数
static type name;
static type funName(){};

#define 宏定义

#if 条件1
条件1成立语句
#elif 条件2
条件2成立语句
#else
条件不成立语句
#endif

起别名
typedef 原有的数据类型 别名(外号)

const
如果const写在指针变量名的旁边, 那么指针的指向不能变, 而指向的内存空间的值可以变
如果const写在数据类型的左边或者右边, 那么指针的指向可以改变, 但是指向的内存空间的值不能改变

iOS学习