C++指针变量的简单运算

来源:互联网 发布:增值税发票的税率算法 编辑:程序博客网 时间:2024/05/22 10:58

指针变量+1和-1:

指针变量加1后,其增加的值是该指针所指向的数据类型的字节数。
    int a;    int *p=&a;    cout<<p<<endl<<p+1<<endl;
输出的结果是:
0x61ff180x61ff1c
因为int的字节是4。不一定是这两个值,但它们的差应该都是4。数组名也是如此。可以修改指针变量的值,不能修改数组名,因为数组名是常量。

数组地址:

数组名代表数组的首地址,即第一个元素的地址。但对数组名取地址时,不会被解释为其地址。
    int a[10];    cout<<a<<endl;    cout<<&a<<endl;    cout<<a+1<<endl;    cout<<&a+1<<endl;
从数值上看,a+1与&a+1相同。但从概念上看,a即(&a[0])是一个4字节内存块的地址,而&a是一个40字节内存块的地址。因此a+1是将地址加上4,而&a+1是将地址加上40。

数组名和指针变量的区别:

当一个数组名赋值给相同类型的变时,可以对这两者用数组表示法或指针表示法来访问元素。但对它们分别使用sizeof时,得到的值是不同的,尽管它们的值相同。
    int a[10];    int *p=a;    cout<<sizeof(a)<<endl<<sizeof(p)<<endl;
sizeof(a)得到是40,而sizeof(p)得到是4。即sizeof(a)得到的整个数组空间的大小,而sizeof(p)得到的只是该指针变量指向的某个基本数据类型的大小。

原创粉丝点击