当前位置:网站首页>Pointer function (basic)
Pointer function (basic)
2022-07-05 04:23:00 【Cao Lele loves learning】
Write a function of pointer type , Return a pointer , however :
This has been explained before :
therefore , When a function is called , Return value , There is no problem ; Because the address space of the return value in the function is before it is released , The value has been assigned to the function name , and The return address When , This address space has been released ( Personal understanding , Not necessarily right ).
There is no problem to return the address :
1、 Set global variables —— Don't suggest
2、 Set static variables —— As the case may be ()
Compare :
Return value :
The return address ( The return value is the function pointer ):
local variable , You cannot return the address and take another value :
To modify the storage type , Make it after the function call , Memory is not released :
attach : String concatenation —— The same data content will be passed , From an address space , Copy to another address space
The function prototype char *strcpy(char *dest, const char *src);
Function pointer exercise : imitation strcat function , Realize your own string connection
Be careful : Priority of self increasing operator > Value priority , therefore *str++ ==> *(str++)
And i++ equally , It's just a variable i, One is the pointer variable *p; In fact, they all use it first , add :
i++ First i Value , then i Value ++
*p++ First *p Value , then p The address of ++
Take it apart and write it :
*str
str++
therefore :*str1++ = *str2++; In fact, that is *(str1++) *(str2++);
It needs to be straightened out :*(str1++) *(str2++); Is not str2 Address increment ,str2 Address increment , And then take str2 Incremented value , Assign a value to str1 The position after the address is incremented . But with a++ = i++ equally
Take respective values first , To assign a value , Then increase the address :
*str1 =*str2;
str2++;
srt1++;
------------------------------------------------------------------------------------------------------------------
practice 2: Imitate string to integer function :atoi.
Write your own integer to string :inttostr
Ideas :
1、 First, use a loop to remainder the integer , And remove the lowest bit
2、 character ’0‘ And integers 0, Difference between 48, That is to say ’0‘
3、 Will screen out each one , Put it in an array ( At this time, it is the opposite , The lowest position ran to the far left )
4、 In exchange for
( because aa[i], After the conversion is complete , An artificial one ’\0‘, therefore i--, Go to the last character aa[i], Find another variable n From an array aa[0] Start swapping , And walk towards the middle .)
therefore :
The penultimate character is exchanged with the first character
The penultimate character is exchanged with the second character
........ With i--;j++; if i=j, Then the data is an odd number ; if i<j, Then the data is an even number
If it's an odd number ,i=j When , Don't move the middle character ; Even number of hours , When i<j When , The two data in the middle have been exchanged .
There's another problem : In the above code , Function defines a static array , The size is fixed ; that , If the parameter passes an array in , Is it better ?
边栏推荐
- MacBook installation postgresql+postgis
- American 5g open ran suffered another major setback, and its attempt to counter China's 5g technology has failed
- 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?
- CSDN正文自动生成目录
- Ctfshow web entry code audit
- Sequelize. JS and hasmany - belongsto vs hasmany in serialize js
- 如何进行「小步重构」?
- 包 类 包的作用域
- About the project error reporting solution of mpaas Pb access mode adapting to 64 bit CPU architecture
- Seven join join queries of MySQL
猜你喜欢
Kwai, Tiktok, video number, battle content payment
C26451: arithmetic overflow: use the operator * on a 4-byte value, and then convert the result to an 8-byte value. To avoid overflow, cast the value to wide type before calling the operator * (io.2)
The scale of computing power in China ranks second in the world: computing is leaping forward in Intelligent Computing
NetSetMan pro (IP fast switching tool) official Chinese version v5.1.0 | computer IP switching software download
Alibaba cloud ECS uses cloudfs4oss to mount OSS
The development of mobile IM based on TCP still needs to keep the heartbeat alive
[uniapp] system hot update implementation ideas
Threejs realizes sky box, panoramic scene, ground grass
【虚幻引擎UE】实现背景模糊下近景旋转操作物体的方法及踩坑记录
A real day for Beijing programmers!!!!!
随机推荐
[finebi] the process of making custom maps using finebi
User behavior collection platform
直播預告 | 容器服務 ACK 彈性預測最佳實踐
快手、抖音、视频号交战内容付费
How to realize real-time audio and video chat function
[uniapp] system hot update implementation ideas
[untitled]
Moco is not suitable for target detection? MsrA proposes object level comparative learning target detection pre training method SOCO! Performance SOTA! (NeurIPS 2021)...
Aperçu en direct | Services de conteneurs ACK flexible Prediction Best Practices
Threejs Internet of things, 3D visualization of factory
Components in protective circuit
陇原战“疫“2021网络安全大赛 Web EasyJaba
【虚幻引擎UE】打包报错出现!FindPin错误的解决办法
[phantom engine UE] realize the animation production of mapping tripod deployment
NetSetMan pro (IP fast switching tool) official Chinese version v5.1.0 | computer IP switching software download
Sequence diagram of single sign on Certification Center
Behavior perception system
[Chongqing Guangdong education] 2408t Chinese contemporary literature reference test in autumn 2018 of the National Open University
Study notes 7
Mixed compilation of C and CC