当前位置:网站首页>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 ?

 

原网站

版权声明
本文为[Cao Lele loves learning]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207050416449387.html