当前位置: 首页 > 文档资料 > C 语言程序设计 >

C语言多级指针举例

优质
小牛编辑
154浏览
2023-12-01

多级指针举例

可能很多同学都执行过这个命令,ping www.baidu.com或者是ping www.qq.com,ping是一个命令,后面的网址就是它的传入参数。不同的参数会导致不同的运行结果。

下面就是我们main函数的标准写法,argc就是传入参数的个数,argv是一个字符串类型的二维指针。当我们需要传递下面四个字符串给main函数的时候,这四个是字符串的首地址不是连续的,我们就可以使用二维指针将它们的首地址存储在连续的空间中。这样我们就可以通过指针变量标签访问的方法访问到这几个字符串。

测试代码如下

我们使用for循环来遍历所有的参数,并使用指针的标签访问它的所有参数,这里的标签地址是连续的,尽管字符串存储的地址是不相关的,但是通过二维指针,它们的首地址构成了一个线性的关系。

运行结果如下

可以看到我们为main函数传入的参数不同,但是通过指针的标签访问方式来看,存储这些字符串的首地址的指针空间是连续的。当编译器接收到四个参数,先找出四个地址存储这些字符串,然后找到四个连续的地址依次存储它们的首地址,最后将四个连续地址的首地址赋给argv。

运行结果如下

可以看到通过不知道参数个数的方法,我们也对它的所有参数进行遍历输出了。这里的递增是连续地址的地址的递增。

对于二维指针,它实际上是一张地址表,这个地址表是无穷大的,通过编译器定义的NULL,我们知道了这个二维指针结束的标志。在我们的实际开发中,我们最多能用到二维指针,三维指针都使用不到了。二维指针已经能够很好的表达我们的逻辑,别的程序员也能够看懂我们对这个问题的解决方案是怎样的。