两种方式:
1 在移动的时候,记录移动的偏移量,存在变量n中。这样对于移动后的指针p,计算
p-=n;
就是将其移动到第一位。
2 更常用的方式为,在有此类需要时,运算前保存原始的位置,即定义同类变量p1,指向第一位,比如计算前做p1 = p;
这样在需要移回时,只需要p = p1即可。
如果p移动时与原始数组在同一个作用域内,那么也可以直接重新复制p为原始数组名。
1楼说错了, 数组名是常量指针 而不是指针常量。
楼主的问题我理解的不是很明白。。。
int array[10];
int *p;
p = array; // p指向数组的第一位
p = array + 1; //p指向数组的第二位,依次类推。不知道是不是问的这个问题
补充:
struct _Student cRecord[c_N]={0};
struct _Student *cP
cP=&cRecord;
你可以 cp->m_szNum[1]; 或者 (*cp).m_szNum[1]; 两种方式都可以
有的,看示例:
int a[10];
int *p ;
p=a;
要p指向的第i(i>=0 && i<10)位可以使用p = a+i;即可实现。
这样指针p就一直指向数组的首地址。
令其等于数组名就可以移回第一位,然后移到哪一位就加几。
补充:
你要指向数组的话只能定义一个char类型的指针。例如:
char *p;
p=cP->m_szNum+n;//(n=0,1,2,...)