"C++自学资料,包括C++程序设计基础、学习目标、学习方式、课程性质、考核方式以及C++语言的历史概述"
在C++编程中,理解指针和数组的关系至关重要。在给定的描述中,我们看到一个关于指针操作的例子,涉及到字符数组和二级指针。首先,`char *argv[]` 是一个命令行参数数组,通常在C/C++程序中用于接收命令行输入的字符串。`argv[0]`通常是程序的名称,`argv[1]`及之后的元素是用户输入的参数。
`char **pargv = argv;` 这一行定义了一个二级指针`pargv`,它指向`argv`数组的第一个元素,即`argv[0]`的地址。这意味着`pargv`现在可以被用来访问`argv`中的所有字符串。
接下来的四行代码是输出语句,它们分别执行了不同的操作:
1. `cout << *(pargv+1) << endl;` 输出的是`argv`数组的第二个元素,即`"nanjing"`,因为`*(pargv+1)`是指向`argv[1]`的指针,也就是`"nanjing"`的首字符地址。
2. `cout << (char)(**pargv+1) << endl;` 这一行比较复杂。`**pargv`是解引用`pargv`,得到`argv[0]`的首字符`'h'`,然后`(char)(**pargv+1)`是将`'h'`的ASCII值加1,输出的是下一个ASCII字符`'i'`。
3. `cout << *(*pargv+1) << endl;` 这行代码输出的是`argv[0]`的第二个字符,因为`*(*pargv+1)`是先移动到`argv[0]`的首地址,再解引用得到第一个字符`'h'`,然后加1,得到`'i'`。
4. `cout << *(*(pargv+2)+4) << endl;` 这行输出`argv[2]`(即`"jiangsu"`)的第五个字符。`*(pargv+2)`是`argv[2]`的地址,加上4后指向`"jiangsu"`的第四个字符`'g'`,然后解引用输出`'g'`。
这个例子展示了C++中指针和数组操作的灵活性,以及如何通过指针来访问和修改内存中的数据。学习C++时,深入理解指针的概念和操作对于编写高效且复杂的程序至关重要。此外,课程信息显示这是一门面向计算机科学与技术专业本科生的基础课程,旨在培养学生的程序设计能力、面向对象编程思想,以及良好的编程习惯。学习过程包括听课、阅读、做作业、上机实践等环节,并通过考勤、作业、上机考试和试卷考试综合评估学生的学习成果。通过这样的学习,学生可以掌握C++语言基础,提升编程技能,并为后续的软件工程学习和实际项目开发打下坚实基础。