1.C++指针小结
1.1定义一个整型指针变量,并指向整型变量a
1.2定义一个整型指针数组,实际上就是地址构成的数组
1.3定义一个指向函数的指针
1.4定义一个返回指针类型的函数
1.5指向指针的指针
1.6指向常量的指针 ,用指向常量的指针变量只是限制了通过指针变量改变它指向的对象的值
1.7常指针:指定指针变量的值是常量,即不能改变指向
1.8指向常量的常指针:即指针变量指向一个固定的对象,该对象的值不能通过指针改变,也不能改变指针的指向。
1.9空指针:不指向任何对象
2.简单示例
#include <iostream> #include <cstdlib> #include <ctime> #include<unistd.h> using namespace std; //指针小结 int main() { int max(int a,int b);//函数声明 int *getRandom(); //函数声明 //1.定义一个整型指针变量,并指向整型变量a int a=8,*w=&a; //2.定义一个整型指针数组,实际上就是地址构成的数组 int *q[3]; int b[3]={5,6,8}; //给指针数组q赋值 for(int i=0;i<3;i++) { q[i]=&b[i];//&是取址运算符 } for(int i=0;i<3;i++) { cout<<"value of b["<<i<<"]="; cout<<*q[i]<<endl; //*是取值运算符 } //3.定义一个指向函数的指针 int (*p)(int,int); p=max; cout<<"max is "<<p(5,4)<<endl; cout<<"max is "<<max(5,4)<<endl; //4.定义一个返回指针类型的函数 int *z,i; // 一个指向整数的指针 z=getRandom(); cout<<"3个随机数为:"<<endl; for(i=0;i<3;i++) { cout<<*(z+i)<<endl; } //5.指向指针的指针 int *e=&a,**u=&e; cout<<"使用指向指针的指针访问整型变量a="<<**u<<endl; //6.指向常量的指针 ,用指向常量的指针变量只是限制了通过指针变量改变它指向的对象的值 char h='A'; const char *v=&h; //assignment of read-only location '* v' //*v='B'; cout<<"h="<<*v<<endl; //常指针可以改变指向 char x='b'; v=&x; cout<<"b="<<*v<<endl; //7.常指针:指定指针变量的值是常量,即不能改变指向 char *const m=&h; //assignment of read-only variable 'm' //m=&x; 出错,不能改变指向 //8.指向常量的常指针:即指针变量指向一个固定的对象,该对象的值不能通过指针改变,也不能改变指针的指向。 const char *const n=&h; //n=&x;// assignment of read-only variable 'n' //*n='g'; // assignment of read-only location '*(const char*)n' //9.空指针:不指向任何对象 void *t; return 0; } //比较两个整数,返回最大的值 int max(int a,int b) { if(a>b) { return a; } else { return b; } } //定义一个返回指针值的函数 /*由于"*"的优先级低于"()"的优先级,因而getRandom首先和后面的"()"结合, 也就意味着,func是一个函数。*/ //生成并返回随机数,返回的是一个整型指针 int *getRandom() { int r[3],i; // 设置种子 srand((unsigned)time(NULL)); for(i=1;i<3;i++) { r[i]=rand(); } return r;//返回的是数组r的首地址 }