关于指针
2011-10-26 13:43
127 查看
#include <stdio.h>
int main()
{
char *c[]={"ENTER","NEW","POINT","FIRST"};
char **cp[]={c+3,c+2,c+1,c};//三级指针
char ***cpp=cp;//cpp就是cp
printf("%s\n",**++cpp);
printf("%s\n",*--*++cpp+3);
printf("%s\n",*cpp[-2]+3);
printf("%s\n",cpp[-1][-1]+1);
return 0;
}首先先看题目第一项**++cpp,首先先执行++cpp,这时,*cpp值是c+2。其次执行**cpp。
当执行*(--(*(++cpp)))时,先执行++cpp,这时*cpp的值是c+1。而后执行--操作,c+1-1=c(但CP仍然指向原来c+1的位置),而后取*操作,此时值为"ENTER"的首地址,而后其地址加3,最后就是ER!
而后cpp[-2]=*(cpp-2)=c+3,所以*cpp[-2]即为“FIRST”的首地址,再加3,最后就是ST!
cpp[-1][-1]=*(*(cpp-1)-1)=*(c+2-1)=*(c+1)="NEW"的首地址,而后加1,最后就是EW!
int main()
{
char *c[]={"ENTER","NEW","POINT","FIRST"};
char **cp[]={c+3,c+2,c+1,c};//三级指针
char ***cpp=cp;//cpp就是cp
printf("%s\n",**++cpp);
printf("%s\n",*--*++cpp+3);
printf("%s\n",*cpp[-2]+3);
printf("%s\n",cpp[-1][-1]+1);
return 0;
}首先先看题目第一项**++cpp,首先先执行++cpp,这时,*cpp值是c+2。其次执行**cpp。
当执行*(--(*(++cpp)))时,先执行++cpp,这时*cpp的值是c+1。而后执行--操作,c+1-1=c(但CP仍然指向原来c+1的位置),而后取*操作,此时值为"ENTER"的首地址,而后其地址加3,最后就是ER!
而后cpp[-2]=*(cpp-2)=c+3,所以*cpp[-2]即为“FIRST”的首地址,再加3,最后就是ST!
cpp[-1][-1]=*(*(cpp-1)-1)=*(c+2-1)=*(c+1)="NEW"的首地址,而后加1,最后就是EW!
相关文章推荐
- 关于常量指针、指针常量等
- 关于智能指针小结
- (转)关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于指针类型占用的字节数
- 关于C语言你不知道的事(1)–指针和数组的区别
- 关于父类中的this指针的问题
- 关于butterknife在Eclipse中的空指针的问题
- 关于指针的内存申请的简单理解(1)
- 关于空指针报错的问题
- 10-12关于指针的一些知识
- 【补充】关于ARM的PC指针异常返回处理(PC+8,PC+4,PC-4,PC-8情况)
- 关于c++中的this指针
- 关于指针数组指针做为返回类型的函数
- 一道 C++ 关于野指针和作用域的问题
- 关于VS打开cshtml出现 未能完成该操作。无效指针。
- 关于变量、1/2级指针等形式的形参传递
- 简单LinuxC程序关于倒置句子中的单词位置(指针的使用)
- [c语言笔记]关于指针操作中使用异或交换两个变量的值
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- C++关于不能返回局部变量的指针的研究