c++?指针(c指针数组)

c++?指针(c指针数组)-图1

目录
    • 声明与相关运算符
    • 指针与地址
    • 例子
    • 指针运算
    • 空指针
    • 无类型指针
    • const指针

声明与相关运算符

1、数据类型 *变量名;
2、两种特殊运算符。
取操作数的内存地址&
取指针对应内存地址上的值 *
注意,内存地址上存储可能会是另一个操作数的指针,因为可以多重指针

指针与地址

1、地址是操作数或对象在内存中的起始位置,但并不能表征这个数的大小,这个地址上可能存整型,也可能存字符型等。
2、指指针除了地址以外,还有一个信息,表示了指向对象的类型,这样可以知道指向对象的大小。

例子
int *x;//指向整型指针
char *x;//指向字符型指针
char *y[10];//指向字符的指针组成的数组,即指针数组
char (*x)[10];//一个指向字符数组的指针,即数组指针
int *f();//返回整型指针的函数
int (*f)();//指向返回整型量的函数的指针,即指针函数。
int (*x[3][2])();//指针数组,数组的每个元素为指向返回整型量的函数的指针
int *(*x)();//指向函数的指针,该函数的返回值为指向整型量的指针
指针运算

1、数组指针
下面利用数组指针对二维元素进行访问。

#include 
#include 
using namespace std;
int main(){
   int x[][3]={1,2,3,4,5,6};
   int (*p)[3];
    for(p=&x[0];p<&x[2];p++){
           cout<<endl<<*p[0]<<" ";
           int *p1=p[0];
           cout<<*(p1+1)<<" "<<*(p1+2)<<" ";
       }
    p=x;
    cout<<endl<<*(*(p+1)+1)<<endl;//x[1,1]
}
1 2 3
4 5 6
5

==== Program exited with exit code: 0 ====
Time elapsed: 000:00.406 (MM:SS.MS)
Press any key to continue...

2、指针和整型量加减,表示增加或减少一个指针位(完成指针的位移),每个指针位相隔的距离由指针指向的数据类型决定,比如int型,32位,每个int* 的加减号完成32位的地址加减,即4个字节距离。
3、指针指向同一数据类型,可以进行大于、等于、小于等关系运算。
4、指针运算比数组运算要快

空指针

NULL
值 为0,使用==或!=来判定是否空指针 。

无类型指针

void *

const指针

1、const * int
指针指向常量
2、int *const
指针是常量 ,指向的数据可以更改。
3、const int *const
指针和指向的数据都不能更改。

转载请说明出处 内容投诉内容投诉
南趣百科 » c++?指针(c指针数组)

南趣百科分享生活经验知识,是您实用的生活科普指南。

查看演示 官网购买