学习笔记:C语言(Mac)

来源:互联网 发布:英文域名 编辑:程序博客网 时间:2024/04/29 06:25

一.基本命令

1.编译命令:(生成.o文件)

cc -c filename.c

2.链接命令:(生成.exe文件)

cc filename1.o filename2.o filename3.o
cc -o 自定义文件名 filename.o

3.运行命令:

./filename  //其中./表示当前目录

二.指针

1.指针的定义:(*说明后面是指针变量)

int a=10;int *p1 = &a;       //指向数值的指针int **p2=&p1;       //指向指针的指针

2.指针运算符:(*是指针运算符,访问指针指向的变量值)

*p1 =9;     //等价于a=9;

3.void *指针:(可以指向任意类型的指针)

int a = 10;char *string = "name";void *p1 = &a;         //指向数值的指针void *p2 = string;     //指向字符串的指针

三. 内存:栈区、堆区、静态存储区

1.自动变量

auto修饰的局部变量,栈区,auto可省略。
执行是创建,执行完毕自动销毁。

2.静态变量

static修饰的变量,静态存储区,只初始化一次。
不会销毁,直至程序退出。
static int b = 0;

3.寄存器变量

register修饰的自动变量,硬件寄存器中。
只限于int,char,浮点型,指针类型变量使用。
函数结束时销毁。

四.其他相关

1.宏

//define 宏名 宏内容(后面不带分号)#define PI  3.14

2.typedef

1>.宏定义后面不能加分号
2>.宏名一般是大写
3>.同名字符串不会被值替换
<pre name="code" class="plain">//带参数的宏,参数列表无需类型#define 宏名(参数列表) 宏内容
//不带参数的宏#defiine PI 3.14

3.结构体

//定义结构体,定义时不会分配内存struct Student{        char *name;        int age;        float height;};//正确的初始化struct Student S1 = {"Jake",22,1.78};//错误的初始化(同数组)struct Student S1;S1 = {"Jake",22,1.78};//定义一个结构体数组struct Student Stus[2];

4.外部函数、内部函数

1>.外部函数
extern修饰,可省略,允许其他文件访问调用。
wx.h   文件1   int b;task1.c  文件2  extern int b;  //声明变量b在外部文件已定义


2>.内部函数
static修饰,被其他文件中的函数调用时,可编译通过,链接时会出错。只能在其定义所在的文件使用。
static修饰的全局变量只能在当前文件使用,是当前文件私有的全局变量。

0 0