当前位置:网站首页>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 ?
边栏推荐
- How to solve the problem that easycvr changes the recording storage path and does not generate recording files?
- 电源管理总线 (PMBus)
- Ffmepg usage guide
- Laravel8 export excel file
- What is the reason why the webrtc protocol video cannot be played on the easycvr platform?
- 首席信息官如何利用业务分析构建业务价值?
- [untitled]
- [uniapp] system hot update implementation ideas
- Basic analysis of IIC SPI protocol
- Threejs factory model 3DMAX model obj+mtl format, source file download
猜你喜欢
如何优雅的获取每个分组的前几条数据
MacBook安装postgreSQL+postgis
Sword finger offer 04 Search in two-dimensional array
电源管理总线 (PMBus)
程序员应该怎么学数学
Threejs rendering obj+mtl model source code, 3D factory model
What is the reason why the webrtc protocol video cannot be played on the easycvr platform?
WeNet:面向工业落地的E2E语音识别工具
kubernetes集群之调度系统
自动语音识别(ASR)研究综述
随机推荐
长度为n的入栈顺序的可能出栈顺序种数
Burpsuite grabs app packets
[untitled]
【科普】热设计基础知识:5G光器件之散热分析
Sequelize. JS and hasmany - belongsto vs hasmany in serialize js
A solution to the problem that variables cannot change dynamically when debugging in keil5
Seven join join queries of MySQL
Rome chain analysis
FFmepg使用指南
【虚幻引擎UE】实现测绘三脚架展开动画制作
电源管理总线 (PMBus)
根据入栈顺序判断出栈顺序是否合理
Three level linkage demo of uniapp uview u-picker components
“金九银十”是找工作的最佳时期吗?那倒未必
[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)
MacBook安装postgreSQL+postgis
How to remove installed elpa package
Threejs Internet of things, 3D visualization of farm (III) model display, track controller setting, model moving along the route, model adding frame, custom style display label, click the model to obt
Function (error prone)
Threejs realizes rain, snow, overcast, sunny, flame