VC++入门教程——张孝祥、袁龙友讲义

3星 · 超过75%的资源 需积分: 10 1 下载量 176 浏览量 更新于2024-10-02 收藏 531KB DOC 举报
"VC++讲义——张孝祥、袁龙友" 这是一份由张孝祥和袁龙友两位教师在2001年基于张孝祥的VC++讲课记录整理而成的教程草稿,旨在帮助初学者入门VC++编程。教程允许自由传播,并在2002年九月进行了更新。作者希望通过通俗易懂的方式,全面覆盖知识点,同时结合实际开发经验,解答可能遇到的问题,力求使读者在学习过程中无困惑。 在实际教学中,作者发现许多学员对C语言的基础概念理解不足,特别是对于字符串、指针、类型转换以及定义指向函数的指针类型等概念,这些是学习VC++的一大挑战。教程通过几个简单的测试来检验读者对C语言的掌握程度。 例如,关于测试问题: 1. `strlen(str)`计算字符串的长度,不包括结束的空字符,所以`strlen("www.it315.org")`为13。 2. `sizeof(str)`返回数组的总字节数,包括结束的空字符,因此`sizeof(str)`为10。 3. 将`"it315.org"`赋值给`str`在C++中是不允许的,因为字符串字面量是常量。 4. 没有初始化的`pstr`直接用于`strcpy`会导致未定义行为,因为没有分配内存。 5. `const char* p1`和`char* const p2`的区别在于前者指针所指内容不可变,后者指针本身不可变。 6. `p1 = (const char*)str;`可以编译通过,用于取消常量性,但后续的`strcpy(p1, "abc");`会因尝试修改常量而引发编译错误。 7. `%d`与`str`配合使用是不正确的,应使用`%s`打印字符串。 8. `pstr = 3000;`是非法的,指针应指向有效的内存地址,可以使用`pstr = (char*)malloc(10);`分配内存。 9. `long y = (long)pstr;`这样的类型转换是可行的,但需要注意可能会有数据丢失的风险。 10. 当`p=3000;`后,`p+1`的结果不再是合法的内存地址,可能导致运行时错误。 这些问题揭示了C/C++编程中常见的陷阱和理解误区,通过解答这些问题,读者可以深入理解C++中的指针、字符串和类型转换等核心概念,这对于进一步学习VC++至关重要。