您的位置:首页 > 科技 > IT业 > 深圳需要做网站的公司有哪些_恶搞图片制作器_知识付费小程序搭建_网站建设网络公司

深圳需要做网站的公司有哪些_恶搞图片制作器_知识付费小程序搭建_网站建设网络公司

2024/12/23 2:16:24 来源:https://blog.csdn.net/qq_51050526/article/details/143451653  浏览:    关键词:深圳需要做网站的公司有哪些_恶搞图片制作器_知识付费小程序搭建_网站建设网络公司
深圳需要做网站的公司有哪些_恶搞图片制作器_知识付费小程序搭建_网站建设网络公司

问题代码:

在这里插入图片描述
函数ltrim是为了消除buf字符数组中左边空格,
memmove函数介绍
在这里插入图片描述
如果对c语言指针运用非常熟练的人,结合函数功能就会发现这个代码非常的傻逼,你会发现为什么需要返回,buf不用接收返回值,执行这个函数后buf中的内容就已经被改变。

正确的应该这样写:

在这里插入图片描述

收获与感悟:

1、我感觉在代码中,变量名与其所指代的值是key和value的关系,在需要value做运算与条件判断时,编译器或解释器就会进行根据key查找到value进行替换
例如:

int a=10;
char *str="你好世界\0"

这里我们可以看做两个c++中的pair结构,

[{key:"a",value:10},{key:"str",value:"字符串首地址”}
]

在这个的基础上我们理解指针做函数参数时,

func(str)

我们将key值为str的pair结构传入函数,在需要对value其进行操作时,如:

*str
*(str+1)

编译器或解释器将替换成value

*(0x12345)
*(0x1235+1)

ps:以上纯是自己的胡乱理解。

2、在第一张图中你们可以发现
buf=ltrim(buf),提示 “表达式必须是可修改的左值”,
1、可以浅显的理解为buf是 char *const 类型,明确buf的地址不能修改,但是这只能作为一个”偏方“记忆不能一个数组直接赋值给另一个数组,将一个指针赋给数组标识符,但这个将buf理解为char *const也是错误的。

char buf2[256]={'0'};
buf=buf2;//同样不被允许会触发报警

2、但其实我们需要明确buf指代的是数组,而数组是数组,指针是指针,数组可以被编译器转换为指针。
例如:

void ltrim(char str[]);

上面的函数应该会被预编译器替换为

void ltrim(char *str)

而指针不能转换为数组,所以在第一张图中
就算buf可以被修改也是不允许的这样写的。

以上纯属个人理解,大概都是问题,不要盲目相信

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com