指针的定义:
指针是变量的一种,里面是一个地址,通过这个地址找到要找的数据。
格式:如int *a short *a char *a....
含义: int a; int *p=&a(也可以写成int *p p=&a);指定P指向以变量a命名的内存空间
赋值 a=100;通过变量名访问空间
*p=100通过地址访问P所指向内存空间,并修改那个空间的值
指针类型大小:不管是int *还是char *,long *都是4个字节;sizeof(int*)
注意:char*p=&a;
p+1 指向地址加一个字节(0x100 到0x101)
int*p =&a; p+1指向地址向后移动4个字节(0x100到0x104)
程序:将a和b的值互换
#include <stdio.h>
void swap(int *x ,int *y)//函数调用后形参的值会被清空,在没有返回值的情况就失去意义
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int a=1,b=3;
swap(&a,&b);//所以要想通过形参改变实参的值需要传递地址,通过地址找到a和b的内存空间改变其值;
printf("%d%d\n",a,b);//虽然函数调用形参x 和y被释放但其实只是释放指针x和y里面的地址,修改的值被保存下来
}
计算指针:
#include <stdio.h>
int main()
{
int x=0,j=0;
int *px=&x;
printf("%p\n",px);
j=*px+3;
printf("%d\n",j);.//通过指针p访问x这段内存空间*PX取x里面的值+3
j=++*px ;//先取值后加1
printf("%d\n",j);
j=*px++