C++指针小记

1、指针变量的声明:

    数据类型 *指针变量名;

    int *p; //声明一个用于存储int型变量地址的指针变量p,即变量p是一个指向int类型的指针变量

2、指针变量的初始化

   数据类型标识符 *指针变量名=初始地址值;

   int i;   //定义一个整型变量i,并为i分配内存空间

   int *p=&i; //定义p为指针变量,并将i的地址赋值给指针变量p作为初值

  特例:指向字符类型的指针变量可以对字符串进行初始化

   char *str="Hello World"; //将字符串的第0个字符'H'的地址赋给指针变量str

3、一个程序:

1 void main()
2 {
3     char *p="hello world";
4     cout<<*p<<endl;
5     cout<<&p<<endl;
6     cout<<p<<endl;
7 }

结果:

4、*和&运算符

   *为指针运算符,用以返回指针变量所指向变量的值。

   &为取地址运算符,用以返回变量的指针,即变量的地址。

例子:int *p; //声明p是一个int型的指针

         y=*p; //将指针p所指向的值赋给y,即y是一个值,而不是指针

例子: int n=1;

         int &q=n;  //声明一个int型的引用名q,该引用名是变量n的别名

例子:int p=&x; //对指针变量p赋初值

5、数组指针:指向数组元素的指针称为数组指针。

6、在C++中,指针变量的基本单位为其指向的数据类型的变量所占用的字节数。

例子:int a[3];

        int *p=a;

        int *q=p+2;

   cout<<p<<endl;

        cout<<q<<endl;

     p与q的地址正好相差:4*2=8

7、指针的动态分配存储--动态分配数组

1 int *p=new int [size];
2 ...
3 delete []p;

8、返回指针的函数

 char *str=(char *string,int c);  //如:在字符串string中查找字符c,找到返回c的地址,否则返回NULL

 char *str1=(char *string1,char *string2); //如:在字符串string1中查找子串string2,如果找到则返回string2在string1中的地址,否则返回NULL

 9、指向函数的指针

 <函数返回值类型>( * <指针的名字 >)(<参数>)

如:int (*p)(); //p为指向返回值为整型的函数指针

     float(*q)(float,int); //q为指向返回值为浮点型函数的指针

如:

1 int *fun(); //返回地址的函数
2 int (*fun)(); //返回函数的指针

10、指针数组

一维指针数组: 数据类型 *数组名[下标表达式];

  [下标表达式]指出数组元素的个数,数据类型确定指针的类型。 如:char *p[10]; //声明一个一维指针数组,包括10个元素,每个元素都是指向字符类型的指针

原文地址:https://www.cnblogs.com/f59130/p/3342336.html