C++指针示例:理解argv和pargv的使用

需积分: 0 1 下载量 101 浏览量 更新于2024-08-19 收藏 8.81MB PPT 举报
在C++程序设计中,谭浩强的教程为我们提供了一个关于指针和字符串处理的基本示例。在这个例子中,我们有三个命令行参数`argv`数组,`char *argv[] = {“hello”, “nanjing”, “jiangsu”}`,其中`pargv`是一个指向`argv`数组的指针。让我们逐个分析这些代码行的含义及其输出结果。 1. `cout << *(pargv+1) << endl;` 这一行中,`*(pargv+1)`表示取`pargv`所指向的`argv`数组中的第二个元素,因为数组下标从0开始,所以`+1`对应的是`"nanjing"`。因此,输出将是`"nanjing"`。 2. `cout << (char)(**pargv+1) << endl;` 这里`(char)(**pargv+1)`首先解引用`**pargv`,它实际上是指向第一个字符(即`'h'`)的指针,然后加上1。由于ASCII码中,`'h'`的下一个字符是`'i'`,但强制类型转换为`char`后,结果还是`'i'`。所以输出将是`'i'`。 3. `cout << *(*pargv+1) << endl;` 这一行与前一个类似,但使用了两次`*`操作符,意味着先解引用`pargv`指向的地址,再解引用该地址的元素。同样,这会输出`"n"`,因为`"nanjing"`的第一个字符是`'n'`。 4. `cout << *(*(pargv+2)+4) << endl;` 这个表达式首先`+2`将`pargv`移动到数组的第三个元素,即`"jiangsu"`。然后`+4`表示跳过前四个字符,因为每个字符占一个字节,所以`*(pargv+2)+4`指向的是`"u"`。输出将是`'u'`。 这段代码展示了指针操作在C++中的基本用法,包括一级指针(`pargv`)和二级指针(`**pargv`),以及数组下标和字符处理。理解这些概念有助于掌握C++中的字符串处理和内存管理。同时,尽管C++语法结构可能相对宽松,但它对程序员的要求较高,需要理解和熟练掌握细节才能写出高质量的程序,并进行有效的调试。