c字符串数组初始化_C语言提高(三)-字符串和一级指针内存模型专题

ed85fe7e01784dbc752cd7cea5c84f45.png

字符串和一级指针内存模型专题

字符串基本操作

字符数组初始化方法

int 
在C语言中使用字符数组来模拟字符串
C语言中的字符串是以’0’结束的字符数组
C语言中的字符串可以分配于栈空间,堆空间或者只读存储区
在C语言中使用字符数组来模拟字符串
C语言中的字符串是以’0’结束的字符数组
C语言中的字符串可以分配于栈空间,堆空间或者只读存储区
int 
strlen()求字符串的长度,注意字符串的长度不包含0
sizeof(类型)字符串类型,的大小,包括0;
02Sizeof与strlen的区别

数组法和指针法操作字符串

数组法,下标法
字符数组名,是个指针,是个常量指针;
字符数组名,代表字符数组首元素的地址,不代表整个数组的。
//字符串操作方法 数组下标法 指针法
推演过程为:i变0+I, 去[]号加*号
其实本质:指针*p间接寻址,操作内存;
[] 编译器为我们做了*p操作而已
#define  _CRT_SECURE_NO_WARNINGS 

字符串做函数参数

指针和数组的巨大区别 char *p = “abcdefg”; Char *buf = “abcdefg”; 一维字符串内存模型:两种
void 

库函数api

int 

字符串相关一级指针内存模型

void 

d0c4b2ea4b62632df925f45d9736d6a0.png

e1db3e3571686f53f62873e29b920ac5.png

项目开发字符串模型

两头堵模型

#define  _CRT_SECURE_NO_WARNINGS 
#define  _CRT_SECURE_NO_WARNINGS 

字符串反转模型

41362e366f443abf6d7c95b7a422d756.png
#define  _CRT_SECURE_NO_WARNINGS 

一级指针(char *)易错模型分析

char *(字符串)做函数参数出错模型分析

建立一个思想:是主调函数分配内存,还是被调用函数分配内存;

void 

越界

char 

不断修改指针变量的值

以下代码打印输出全部为空!

void 

你向外面传递什么

1
//char *p = "abcd11111abcd2222abcdqqqqq"; //字符串中"abcd"出现的次数。

重复的错误何时休

#include 
#define  _CRT_SECURE_NO_WARNINGS 

const专题

1、 const基础知识(用法、含义、好处、扩展)

int 
int func1(const )
初级理解:const是定义常量==》const意味着只读
含义:
第一个第二个意思一样 代表一个常整形数
第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改)
第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改)
第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改)
Const好处
合理的利用const,
指针做函数参数,可以有效的提高代码可读性,减少bug;
清楚的分清参数的输入和输出特性
结论:
指针变量和它所指向的内存空间变量,是两个不同的概念。。。。。。
看const 是放在*的左边还是右边 看const是修饰指针变量,还是修饰所指向的内存空变量

考试强化训练

1、有一个字符串开头或结尾含有n个空格(” abcdefgdddd ”),欲去掉前后空格,返回一个新字符串。
要求1:请自己定义一个接口(函数),并实现功能;
要求2:编写测试用例。
int trimSpace(char *inbuf, char *outbuf);
#define  _CRT_SECURE_NO_WARNINGS 
2、有一个字符串”1a2b3d4z”,;
要求写一个函数实现如下功能,
功能1:把偶数位字符挑选出来,组成一个字符串1。valude;
功能2:把奇数位字符挑选出来,组成一个字符串2,valude;
功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。
功能4:主函数能测试通过。
int getStr1Str2(char *souce, char *buf1, char *buf2);
#define  _CRT_SECURE_NO_WARNINGS 
键值对(”key = valude”)字符串,在开发中经常使用;
要求1:请自己定义一个接口,实现根据key获取valude;
要求2:编写测试用例。
要求3:键值对中间可能有n多空格,请去除空格
注意:键值对字符串格式可能如下:
“key1 = valude1”
“key2 = valude2
“key3 = valude3”
“key4 = valude4”
“key5 = “
“key6 =“
“key7 = “
int getKeyByValude(char *keyvaluebuf, char *keybuf, char *valuebuf, int * valuebuflen);
int main()
{
getKeyByValude(“key1 = valude1”, ” key1”, buf, &len);
}
/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值