例子: #include <iostream.h> void maino int a=1 int pal= &a, pa2=0 void pv= pal cout<<a=t<<a<<endl 必Ou“*(mtv*int米py<endl/输出结果时void指针 须强制类型转换 pa2-=(int *pv cout<<*pa2=t <<*pa2<<endl
例子: #include <iostream.h> void main() { int a=1; int *pa1= &a, *pa2 = 0; void *pv = pa1; cout<<"a=\t"<<a<<endl; cout<<“*(int *)pv=\t”<<*(int *)pv<<endl;//输出结果时void指针 必须强制类型转换 pa2 = (int *)pv; cout<<"*pa2=\t"<<*pa2<<endl; }
2.指针传递给函数的四种方法: 1)非常量数据的非常量指针(指针和数据都可以修改) echar *sPtr 2)常量数据的非常量指针(指针可以指向其它数据,但不能通过 指针修改数据) const char * sPtr Int a=1.b=2 Const intp=o P1=&a p a 1 =&b
2.指针传递给函数的四种方法: l)非常量数据的非常量指针(指针和数据都可以修改) •char *sPtr 2)常量数据的非常量指针(指针可以指向其它数据,但不能通过 指针修改数据) •const char *sPtr Int a = 1,b =2 Const int *p1=0; P1=&a; *p1=2; a=2; p1=&b;
3)非常量数据的常量指针(指针总是指向相同的地址,地址里 的数据可以通过指针修改) nt* const ptr-=&x,∥声明为cons指针应在声明时初始化 Int a=1. b=2 Int *const pl=&a Int*const p2 pI=2 pl=&b 4)常量数据的常量指针(指针总是指向相同的地址,地址里的 数据不能修改) const int *const ptr=&x
3)非常量数据的常量指针(指针总是指向相同的地址,地址里 的数据可以通过指针修改) •int *const ptr=&x; //声明为const指针应在声明时初始化 Int a=1,b=2; Int *const p1=&a; Int *const p2; *p1=2; p1=&b; 4)常量数据的常量指针(指针总是指向相同的地址,地址里的 数据不能修改) •const int *const ptr=&x;
动态内存分配 程序所使用的存储区 静态存储区一一程序初始化时分配的存储区。 2.栈—一局部变量分配的存储区域 3.堆一—自由存储单元,动态分配存储区 1、运算符new 形式: 指针=new数据类型 new返回首地址
三、动态内存分配 程序所使用的存储区: 1.静态存储区――程序初始化时分配的存储区。 2.栈――局部变量分配的存储区域。 3.堆――自由存储单元,动态分配存储区。 1、运算符new 形式: 指针 = new 数据类型 new 返回首地址
例子: nt“p; pnew int int*p= new int(1);/可以初始化 int*p= new int5];〃数组动态分配 int*p= new intl5-={1,2,3,4,5};∥错,不能动态分配内存时对数组 初始化
例子: int *p; p=new int ; int *p = new int(1); //可以初始化 int *p=new int[5]; //数组动态分配 int *p=new int[5]={1,2,3,4,5}; //错,不能动态分配内存时对数组 初始化