c语言回收字符串空间,C语言基础知识(字符串,函数,内存空间)

4699ca678e95a0b32fff84c2ac0901cb.png

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: 小二欢迎留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值