首先我们大概了解一下
内存:
1.内存中每一个内存单元(字节)对应一个
地址,一个地址的大小是4个字节。
2.在32位平台上指针的大小是4个字节。64位平台上指针的大小是8个字节。
3.指针可以理解为
一个变量用来专门存放地址
。
eg1:改变指针p存储的地址进而改变*p(指针p指向地址中的数据)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 10;
int b = 20;
int *p = &a;
p = &b;
printf("%d ", *p);//20
system("pause");
return 0;
}
int *p = &a ;//指针p存放的是
a的地址(a在内存中存放的位置),指针p指向a地址中的数据10(a的数据10)。
p = &b;//改变指针p存放的地址为
b的地址
。
printf("%d ",
*p) ;//
将指针p指向a地址中的数据(10)改为指针p指向b地址中的数据(20)。
eg2:改变指针指向地址的数据来改变*p
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 10;
int b = 20;
int *p = &a;
*p = b;
printf("%d ", *p);//20
system("pause");
return 0;
}
int *p = &a ;//指针p存放的是
a的地址
(a在内存中存放的位置),指针p指向a地址中的数据10(a的数据10)。
*p = b;//改变指针p指向的
地址a中的数据,改为
b的数据(20)。
printf("%d ",
*p
) ;这种方法其实
改变指针p指向地址a的数据
(由10改为20),其实就是
改变了a的值,进而改变了*p(指针p指向地址的值)