当前位置:网站首页>指针函数(基础)
指针函数(基础)
2022-07-05 04:16:00 【曹乐乐爱学习】
写一个指针类型的函数,返回一个指针,但是:
这个之前有解释过:
所以,在函数调用时候,返回值,是没有问题的;因为在函数中返回值的地址空间在被释放之前,值就已经赋值给了函数名,而返回地址时候,这块地址空间已经被释放了(个人理解,未必正确)。
要想返回地址没有问题:
1、设置全局变量——不建议
2、设置静态变量——视情况而定()
对比看一下:
返回值:
返回地址(返回值是函数指针):
局部变量,不能返回地址再取值:
要修改存储类型,使其在函数调用之后,内存不被释放:
附:字符串连拷贝——将通同样的数据内容,从一个地址空间,拷贝到另一个地址空间
函数原型 char *strcpy(char *dest, const char *src);
函数指针练习:模仿strcat函数,实现自己的字符串连接
注意:自增运算符的优先级>取值优先级,所以*str++ ==> *(str++)
与 i++一样,只不过一个是变量i,一个是指针变量*p;其实都是先用,再加:
i++ 是先用i的值,再将i的值++
*p++ 是先用*p的值,再将p的地址++
拆开来写就是:
*str
str++
因此:*str1++ = *str2++; 其实就是 *(str1++) *(str2++);
要理清楚的 :*(str1++) *(str2++);可不是str2地址递增,str2地址递增,然后取str2递增后的值,赋值给str1地址递增后的位置。而是与 a++ = i++一样
先各自取值,再赋值,然后再地址递增:
*str1 =*str2;
str2++;
srt1++;
------------------------------------------------------------------------------------------------------------------
练习2:模仿字符串转整形函数:atoi。
写一个自己的整形转字符串:inttostr
思路:
1、先用循环对整数取余,并移除掉最低位
2、字符’0‘与整数0,相差48,也就是’0‘
3、将筛选出来的每一位,存到数组里(这时候是反的,最低位跑到了最左边)
4、交换
(由于aa[i],在转换完成后,人为补了一个’\0‘,所以i--,走到最后一个字符aa[i],再找一个变量n从数组aa[0]开始交换,并往中间走。)
于是:
倒数第一个字符与第一个字符交换
倒数第二个字符与第二个字符交换
........随着i--;j++;若i=j,则数据为奇数个;若i<j,则说明数据为偶数个
如果是奇数个,i=j时候,最中间的字符不用动;偶数个时候,当i<j时候,最中间的两个数据已经被交换。
还有一个问题:上面代码中,函数中定义了一个静态数组,大小是固定的;那么,如果参数传递一个数组进来,是不是更好?
边栏推荐
- Plasticscm enterprise crack
- A應用喚醒B應該快速方法
- [illusory engine UE] method to realize close-range rotation of operating objects under fuzzy background and pit recording
- 【UNIAPP】系统热更新实现思路
- Network security - record web vulnerability fixes
- Judge whether the stack order is reasonable according to the stack order
- 行为感知系统
- Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
- Is "golden nine and silver ten" the best time to find a job? Not necessarily
- 在线文本行固定长度填充工具
猜你喜欢
Differences among 10 addressing modes
Kwai, Tiktok, video number, battle content payment
How does the applet solve the rendering layer network layer error?
【虚幻引擎UE】打包报错出现!FindPin错误的解决办法
技术教程:如何利用EasyDSS将直播流推到七牛云?
Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
JVM garbage collection
Realize the attention function of the article in the applet
Plasticscm enterprise crack
IronXL for . NET 2022.6
随机推荐
Use threejs to create geometry and add materials, lights, shadows, animations, and axes
FFmepg使用指南
American 5g open ran suffered another major setback, and its attempt to counter China's 5g technology has failed
Interview related high-frequency algorithm test site 3
How to get the first few pieces of data of each group gracefully
[moteur illusoire UE] il ne faut que six étapes pour réaliser le déploiement du flux de pixels ue5 et éviter les détours! (4.26 et 4.27 principes similaires)
Threejs Internet of things, 3D visualization of farms (I)
As soon as I write the code, President Wang talks with me about the pattern all day
Rome链分析
[illusory engine UE] method to realize close-range rotation of operating objects under fuzzy background and pit recording
NEW:Devart dotConnect ADO. NET
Behavior perception system
Use Firefox browser to quickly pick up Web image materials
Wechat applet development process (with mind map)
mysql的七种join连接查询
Bit operation skills
This is an age of uncertainty
Three level linkage demo of uniapp uview u-picker components
About the recent experience of writing questions
Use of vscode software