定义:
- 内存地址(内存单元的编号)
- 从0开始的非负整数
- 范围是0-FFFFFFFF(0--4G-1)
- 指针变量是存放内存单元地址的变量
- 指针的本质是一个操作受限的非负数
#include<stdio.h> void main(){ int * p; //int * 是一个整型指针类型 p是一个变量 所有p是一个指向整型指针类型的变量 int i=10; int j; //p=10; //error p=&i; j=*p; printf("i=%d,j=%d,*p=%d,p=%x ",i,j,*p,p); }
#include<stdio.h> void f(int i){ i=99; } void main(){ int i=9; f(i); printf("%d ",i); }
引用类型调用
#include<stdio.h> void f(int i){ i=99; } void main(){ int i=9; f(i); printf("%d ",i); }
指针调用
#include<stdio.h> void f(int * i){ *i=99; } void main(){ int i=9; f(&i); printf("%d ",i); }
#include<stdio.h> void main(){ int a[5]={1,2,3,4,5}; bool c=(a[3]==*(a+3)); //数组名表示指向第一个指针 printf("%d ",c); printf("%p ",a+1); printf("%p ",a+1); printf("%p ",a+2); printf("%p ",a+3);printf("%d ",*a+3);
printf("%d ",*(a+3));
}
#include<stdio.h> void show_Array(int * p,int len){ for(int i=0;i<len;i++) printf("%d ",p[i]); } void main(){ int a[5]={1,2,3,4,5}; show_Array(a,5); }
#include<stdio.h> void main(){ double * p; double x=66.6; p=&x; //x占八个字节 p表示第一个字节的地址 double arr[3]={1.1,1.2,1.3}; double * q; q=&arr[0]; printf("%p ",q); q=&arr[1]; printf("%p ",q); }
主要是说:指针式等于第一个字节的地址