指针指向
struct S
{
int i;
int *p;
};
void main()
{
S s;
int *p1=&(s.i);
p1[0]=1;
p1[1]=5;//p1只是指向i,为什么可以p1[1]的?
cout<<p1[1]<<","<<s.p<<endl;
}
还有就是将int *p1=&(s.i);改为int a=9,*p1=&a;之后就不行了呢?
相关推荐
C语言指向指针的指针
本文主要讲了C语言指向指针的指针的相关问题,下面一起来学习一下
**p与 *&p的区别, 即指向指针的指针和引用指针变量的区别
一份总结“指向指针的指针和引用指针变量区别”的精华笔记,很多人对于**p与 *&p的差别不是很清楚,相信这个笔记可以解决你的疑惑。
指向变量的常指针与指向常变量的指针详细解析
常(量)指针常指针就是我们说的指向常量的指针,顾名思义,它是用来指向常量的。 用常指针指向常变量实际上,C++规定只能用指向常变量的指针指向常变量,普通指针指向它就会报错,原因也很容易理解,我们用普通指针指向常变量之后,有可能就会进行改变常变量数值的操作,这样做是不被允许的。 常指针的定义方法: 代码如下:const 类型名 * 常指针名;下面是它的一个简单的使用示例:程序1.1.1 代码如下:#include<iostream>using namespace std;int main(){ const int i=5;//定义一个int型常变量 const int *p;//定义一个int
深入解析C++中的指针数组与指向指针的指针
以下是对C++中的指针数组与指向指针的指针进行了详细的介绍,需要的朋友可以过来参考下
指向指针的指针 word
10.7 指针数组和指向指针的指针 10.7.1 指针数组的概念 一个数组的元素值为指针则是指针数组。 指针数组是一组有序的指针的集合。 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。 指针数组说明的一般形式为: 类型说明符 *数组名[数组长度] 其中类型说明符为指针值所指向的变量的类型。 例如: int *pa[3] 表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。 【例10.33】通常可用一个指针数组来指向一个二维数组。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数组。 main(){ int a[3][3]={1,2,3,4,5,6,7,8,9}; int *pa[3]={a[0],a[1],a[2]}; int *p=a[0]; int i; for(i=0;i<3;i++) printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i)); for(i=0;i<3;i++) printf("%d,%d,%d\n",*pa[i],p[i],*(p+i)); } 本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行。然后用循环语句输出指定的数组元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p与a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。读者可仔细领会元素值的各种不同的表示方法。


