C/C++指针最常问问题

下面总结了stackoverflow.com关于 C/C++指针的问题。指针是C/C++中很重要的核心概念。

#1 不使用循环语言,从1数到100

执行结果:

从1数到100,除了用循环,还可以用递归。根据C语言,j的初始值是1,当1 <= j < 100,&main + (&exit – &main)*(j/100)调用&main,它是main函数的地址。&main)(j+1)是下一次迭代。停止条件是当j==100,&main + (&exit – &main)*(j/1000)调用&exit,退出码是101。

#2 为什么a[5] == 5[a]?

a[b]等同于*(a+b),a是数组基地址,b是相对于基地址的偏移量。a[b]的值是a+b地址处的值。

因为a+5和5+a等同于同一个地址, *(a+5)==*(5+a)。所以a[5] == 5[a]。

#3 指针有一级指针、二级指针(指向指针的指针)、三….。问题是,最多能有多少级指针(int ****************zz;)。

C++标准定义最少支持256级,最多标准中没有定义,不同的c/c++编译器实现上有所不同。总之,可以达到人脑能处理的极限。

#4 常量指针的作用是什么

调用(2),函数中的代码可以更改ptr地址处的值。调用(1),如果试图在函数中更改ptr地址处的值,会报错。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注