C语言:
1.数据类型
C的数据类型包括:
整型(int)、字符型(char)、浮点型(单(float)、双精度(double))、布尔型(bool)、枚举类型(enum)、数组类型(arr[])、结构体类型(struct)、指针类型(*p)和空类型。
2.常量与变量
(1) 常量其值不可改变,符号常量名通常用大写。
(2) 变量是以某标识符为名字,其值是可以改变的量。
(3) 标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
3.数组
(1) 如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。例如:int arr[5];
(2) 字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。、
4.结构的声明
第一种声明方式:标准,正规的 struct person{ int age; float height; }; 第二种声明方式,相当于匿名的结构 一般只用一次 struct { int age; float height; }p2; 第三种 typedef struct Emp{ int age; } Employee; 第四种 typedef struct { int age; } Employee;
5.指针
(1) 如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 * 则是取内容操作符,意思是取这个内存地址里存储的内容。
(2)指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值(不同于return(z)这样的仅能得到一个返回值。
(3)指针是一把双刃剑,许多操作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。
(4)指针的基本应用:
1)、++,--,+,-
int arr[]={1,2,3}; int *p=arr; int *p2=&arr[1]; p2--; printf("%d\n",*p2);
这里会输出1;
2)、作为函数参数
int jiaohuan(int *a,int *b) { int temp=*a; *a=*b; *b=temp; }
3)、作为函数返回值
char* GetMemory() { char *p = new char[100]; return p; }
4)、void*
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。呵呵,这个道理蛮简单,我们可以说“男人和女人都是人”,但不能说“人是男人”或者“人是女人”。
5)、指针数组:int *p[3];
首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称
#include <stdio.h> //用指针数组输出字符串 int main(){ char *p[5]={"qwe","asd","rtt","fgh","vbc"}; int i; for (i = 0; i < 5; i++) { printf("%s\n",p[i]); } }
6)、指针的指针:类型符**变量名(例如:**p)
int a=5; int *p; int **pp;//*pp是指向int*类型数据的指针 p=&a; pp=&p;//将p的地址赋给pp **pp=a;
7)、函数指针
int (*f) (int x); /* 声明一个函数指针 */
#include <stdio.h> int add(int a,int b) { return a+b; } int main(){ int a=3; int b=3; int (*p)(int,int); p=add; int result=(*p)(a,b); printf("%d\n",result ); }
8)、指针的作用:
指针可以用来有效地表示复杂的数据结构,可以用于函数参数传递并达到更加灵活使用函数的目的.使C语言的设计具有灵活、实用、高效的特点。指针不仅仅是C语言的灵魂,运用得好更是事半功倍,让你写出的程序更简洁!
6.常用调试命令(lldb)
file | 文件名 |
b(breakpoint) | 断点 |
br list | 所有的断点 |
br del | 删除断点 |
l | 显示代码 |
n:next | 下一个 |
s:sept | 单步运行 |
continue | 继续 |
finish | 结束 |
打印某一变量的值 | |
frame variable | 帧变量 |
diplay | 每次运行到断点就显示变量的值,用于观察变量的变化 |
expr | 改变函数的值 |
q | 退出运行 |
7.动态内存
(1) malloc
(2)calloc
(3)realloc
(4)free