地址与指针变量
内存地址
- 将内存抽象成一个很大的一维字符数组
- 编码就是对内存的每一个字节分配一个32或64位的标号(与处理器有关)
- 这个内存编号称之为内存地址
- 内存中的每一个数据都会分配相应的地址:
char:占一个字节分配一个地址
int:占四个字节分配四个地址
指针和指针变量
- 内存区的每一个字节都有一个编号,这就是地址。
- 如果在程序中定义了一个变量,再dui对程序进行bian编译或运行时,系统就会给这个变量分配内存单元,并确定它的内存地址。
- 指针的实质实质就是内存“地址”。指针就是地址,地址就是指针。
- 指针是内存单元的编号,指针变量是存放地址的变量。
- 通常叙述时会把指针变量称为指针,实际上含义不一样。
指针引用
获取变量a的内存地址
指针类型定义
int *p=&a (int*是一种数据类型)
*p=100;(*是运算符)
定义指针变量(也即取a的地址)
指针变量也是变量
所有指针类型在32位操作系统下是4个字节
所有指针类型在64位操作系统下是8个字节
用指针作函数参数
1.函数形参改变实参的值
#include<stdio.h>
int main(void)
{
int x=10;
int y=20;
swap2(&x,&y);
printf("x=%d,y=%d\n",x,y);
return 0;
}
void swap2(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}