#include<stdio.h>
int leaf(int *arr,int len)
{
int **k ;
k = &arr;
**(k+1)=2;// Put the secondary pointer and put the address of the arr, and it bounces
}
int main()
{
int ab[] = {1,5,5,4,5,8,7,7};
leaf(ab,sizeof(ab)/sizeof(int));
for(int i=0; i<(sizeof(ab)/sizeof(int)); i++)
{
printf("%d",ab[i]);
}
}
I transferred the ab array in the main function to the leaf function The *arrr of the leaf function is because I declared it as a pointer in the function We declare k as a two-dimensional pointer and put the address of the array arr of parameters from leaf It bounces.
So I'm just going to use a one-dimensional pointer
#include<stdio.h>
int leaf(int *arr,int len)
{
int *k ;
k = arr; //This is a pointer, but I didn't even put the arr address value, but the value I wanted was printed out...
*(k+1)=2;
}
int main()
{
int ab[] = {1,5,5,4,5,8,7,7};
leaf(ab,sizeof(ab)/sizeof(int));
for(int i=0; i<(sizeof(ab)/sizeof(int)); i++)
{
printf("%d",ab[i]);
}
But if you edit it like this,
// I'm sure int *arr is a pointer to arr, so why is that?
}
After making the correction in this way, it worked well without any errors. On the contrary, it's even more difficult because there's no error.
c pointer array
int leaf(int *arr,int len)
{
int **k ;
k = &arr;
**(k+1)=2;// Put the secondary pointer and put the address of the arr, and it bounces
}
int main()
{
int ab[] = {1,5,5,4,5,8,7,7};
leaf(ab,sizeof(ab)/sizeof(int));
for(int i=0; i<(sizeof(ab)/sizeof(int)); i++)
{
printf("%d",ab[i]);
}
}
In the code above, we handed ab to leaf as a factor, so you think ab and arr are exactly the same, right?
Well, that's not true. ab@main
and arr@leaf
(Let's say var@func
is abbreviated from func
variable in func
function.) The value is clearly the same. However, the address can be different and different. So, &arr@leaf
is different from &ab@main
(let's say &var
is a pointer to var
.
If you run it in debugging mode on ideas like Visual Studio, you can see that it's different if you look at what the pointer values of the two variables are. (Or you can print out the pointer values.))
I'm just curious. Why are you doing this?
Arr is a one-dimensional array (pointer), but accessing the address of the arr?
I think it's funny how it works
What do you think will happen if I approach the address of the address?
I think it's normal if there's a segment error
And is there a grammar called **k? As far as I know, it's a grammar that doesn't exist
613 GDB gets version error when attempting to debug with the Presense SDK (IDE)
916 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
582 PHP ssh2_scp_send fails to send files as intended
620 Uncaught (inpromise) Error on Electron: An object could not be cloned
© 2024 OneMinuteCode. All rights reserved.