指针的初步了解

首先我们大概了解一下 内存
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指向地址的值)

猜你喜欢

转载自blog.csdn.net/SoYangA/article/details/80291897