C++指针示例:理解argv和pargv的输出

需积分: 43 0 下载量 2 浏览量 更新于2024-08-19 收藏 8.66MB PPT 举报
在C++程序设计中,谭浩强的教材提供了一个关于指针的实例来帮助理解。假设有一个`char *argv[]`数组,它存储了字符串"hello", "nanjing", 和 "jiangsu"。`char **pargv`是一个指向`argv`数组首地址的指针,用于间接访问数组元素。 1. `cout<<*(pargv+1)<<endl;` 这个语句首先对`pargv`加1,然后解引用`*(pargv+1)`,实际上就是访问`argv`中的第二个元素,即"nanjing"。因此,输出将是"Nanjing"。 2. `cout<<(char)(**pargv+1)<<endl;` 这里,`**pargv`首先解引用`pargv`所指向的地址,获取到`argv`的第一个元素"hello",然后对字符数组中的第一个字符(索引0)加1。由于字符数组中的每个字符实际上是对应的ASCII码,加1会得到下一个字符,即'e',所以输出是'e'。 3. `cout<<*(*pargv+1)<<endl;` 这个表达式首先解引用`*pargv`,得到字符串"hello",然后对第一个字符'e'加1。因为字符串是字符数组,这里相当于移动到下一个字符'i',输出是'i'。 4. `cout<<*(*(pargv+2)+4)<<endl;` 再次对`pargv`加2,得到指向"jiangsu"的指针,然后对这个字符串的第四个字符加1。"jiangsu"的ASCII码表示中,'s'的索引是4(注意在C++中索引从0开始),所以加1后得到'g',输出是'g'。 这段代码展示了C++中指针的基本用法,包括一级指针(`pargv`)、二级指针(`*(pargv+1)`)以及字符数组的处理。同时,它演示了C++语言的灵活性,虽然语法结构可能不如某些高级语言严密,但通过灵活的指针操作可以实现复杂的内存访问。此外,C++的可移植性和对低级控制的支持使得它在系统编程和软件开发中非常受欢迎。学习C++的过程中,理解和掌握指针是至关重要的,因为它们在数据结构、动态内存管理和函数参数传递等方面发挥关键作用。