当前位置:网站首页>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 ?
边栏推荐
- OWASP top 10 vulnerability Guide (2021)
- Why can't all browsers on my computer open web pages
- Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
- Use threejs to create geometry and add materials, lights, shadows, animations, and axes
- Threejs loads the city obj model, loads the character gltf model, and tweetjs realizes the movement of characters according to the planned route
- 基于TCP的移动端IM即时通讯开发仍然需要心跳保活
- 函數(易錯)
- level18
- Open graph protocol
- Technical tutorial: how to use easydss to push live streaming to qiniu cloud?
猜你喜欢
American 5g open ran suffered another major setback, and its attempt to counter China's 5g technology has failed
技术教程:如何利用EasyDSS将直播流推到七牛云?
Realize the attention function of the article in the applet
WeNet:面向工业落地的E2E语音识别工具
Threejs rendering obj+mtl model source code, 3D factory model
[thingsboard] how to replace the homepage logo
The development of mobile IM based on TCP still needs to keep the heartbeat alive
level17
Kwai, Tiktok, video number, battle content payment
指针函数(基础)
随机推荐
Network security - record web vulnerability fixes
小程序中实现文章的关注功能
What is the reason why the webrtc protocol video cannot be played on the easycvr platform?
包 类 包的作用域
基于TCP的移动端IM即时通讯开发仍然需要心跳保活
假设检验——《概率论与数理统计》第八章学习笔记
根据入栈顺序判断出栈顺序是否合理
A應用喚醒B應該快速方法
【虚幻引擎UE】实现测绘三脚架展开动画制作
Threejs Internet of things, 3D visualization of farms (I)
Rust blockchain development - signature encryption and private key public key
MySQL: view with subquery in the from clause limit
[phantom engine UE] only six steps are needed to realize the deployment of ue5 pixel stream and avoid detours! (the principles of 4.26 and 4.27 are similar)
Serpentine matrix
Moco is not suitable for target detection? MsrA proposes object level comparative learning target detection pre training method SOCO! Performance SOTA! (NeurIPS 2021)...
Convert Boolean to integer value PHP - Convert Boolean to integer value PHP
Is "golden nine and silver ten" the best time to find a job? Not necessarily
Number of possible stack order types of stack order with length n
After the deployment of web resources, the navigator cannot obtain the solution of mediadevices instance (navigator.mediadevices is undefined)
学习MVVM笔记(一)