C 语言重点
arc4random() //产生一个随机数arc4random()A 随即数对41取余 得到0-40的数余数是正数
arc4random() % 11 + 20// 20 -30的数公式 arcrandom()%(b-a+1) +a对a-b范围内取余数
pow( a, b)代表a的b次方
sqrtf(a) 表示 对a开方 就a的 1/2 次方
字符数组定义://数组不能参加运算,数组元素能参加运算
// 字符串的字符不能整体赋值,因为字符串是字符数组。需要使用strcpy()
char a[10]="iphone";尽量又这个!! 或者char
a[10]={'i','p','h','o','n','e'}; //定义一个长度为10的字符数组
strlen() 计算字符串的长度
strcpy() 字符串的拷贝strcpy(a,b)把b拷贝到a中最好在a,b数组前面定义数组的大小 因为如果b的大小大于a,虽然成功拷贝 但拷贝多余的空间只是暂时给a如果有其他的申请到a多余的空间其中,a只能保持原来的空间!所以不定义不安全
strcat() 字符串拼接strcat(a,b)把b拼接到a后面
strcmp() 字符串比较
函数声明写在.h里面
定义写在.m里面
普通变量形参的值是从 实参的值拷进来(形参和实参不同地址),是两个变量
数组作为参数,把数组名传入,即数组的首地址(与普通变量不一样),形参和实参相同地址,是一个变量
当数组作为参数,数组的长度需要传进去
结构体值允许初始赋值能全部赋值,不能重复赋值常量,后面只能单个元素赋值。但可以重复让其他结构体赋值给
如Stu a = {“da”, 23, 43}; 不能再赋值 a = {“tf”, 3, 1}; 但可以 b ={“fd”, 5, 2} a = b;
typedef struct stu Stu //把Stu代替 struct stu
指针 %p//输出地址
int q=5
int *p=null;// p是指针变量,就是地址变量 (int *)是一个整体NULL 恒等于 Ox00000000
p=&a;//p是常量a的地址
printf("%d",*p)//指针变量前面加* 是表示地址里面的内容
//& : 取地址运算符,根据变量名,获取首地址
// * :取值运算符,根据地址,获取对应的值
指针占用多少字节取决余操作系统位数 32位占4位 64位占8位
只要是指针就可以用 -> 因为-> 就是给指针用的
char 型变量 占一个字节空间
sizeof()看一个变量占多少字节
数组作为函数参数的时候,其实是传递给函数的数组的首地址
数组不能直接赋值,结构体可以直接赋值,就是将一个结构体对象赋值能另外一个对象
指针可以当数组用 数组可以当指针用//去*在变量右边加[]
内存:5个区
1.栈区:变量
2.堆区:(重点--动态内存分配)
3.常量区
4.静态区:全局区 // 静态变量只能被初始化一次,重复初始化 只有第一次有效
5.代码区
char str[] = “iPhone”;// 在栈区申请7个字节空间存储 iPhone 是从常量区的iPhone 拷贝过去
char *str = “iPhone”; // str 是指针变量 在栈区申请8个字节空间(64位)存储常量区iPhone的地址
常量区只读不能修改 所以 char *str = “iPhone”; 所以str[1] = ‘p’;是错误的
因为改变了常量区,
但str = “dafaf”; 可以 因为指针重新指向另个一常量的地址了
内存操作函数
calloc(n,sizeof(int));//分配n个4个(int)字节的内存里面都清0;
malloc();//不清0;
reallo(void *p,sizeof(int))
void *memset(void *p,int c,sizeof(n) );//从p开始 长度为n所有字节赋值为c ,通常用于清除结构体或者数组元素
void *memcpy(void *p,void *q,sizeof(n));//从q拷贝n个字节到p中宏
#define //宏纯大写定义宏或k+驼峰法(推荐)
如#defineARRRYCOUNT10 或 #define kArrayCouny 10(推荐)无参宏
//带参宏 #define kMaxValue(A,B) (A>B?A:B)
条件编译
#ifdef标识符A//如果定义了标识符A
代码段1
#else//否则
代码段2
#endif //结束语句
枚举//成为高手多使用枚举
enum 枚举名{ };//常与 switch(){ case:}一起使用
static 用于修饰全局变量
函数指针//函数名代表函数地址,经常与函数回调一起用
int (*p)(类型 形参);
typedef int (*PFUM)(int,int); //相当于 int (*)(int,int)改名PFUM
函数回调int getValue(int x,int y,PFUM p){}
PS: 小二欢迎留言。