新手有关问题n则
新手问题n则
1.cout < <char(*ptr+ 'A '- 'a ') 这是什么意思(其中ptr指向一字符串数组)
2.*P++是不是先++再* 因为++是右结合?
3.当程序执行中 数组元素的下标超出所定义范围时 系统将给出 "下标越界 "的出错信息
这句话为什么不对?
4.引用可以指向不同的变量 只要类型一致就可以
这句话为什么错?
5. char s[]= "9876 ",*p;
for (p=s;p <s+2;p++)
std::cout < <p < < " ";
输出结果是什么?为什么?
------解决方案--------------------
1. 'A ' == 0x41, 'a ' == 0x61
故cout < < char(*ptr + 'A ' - 'a ') ==>
char ch = *ptr - 32;
cout < < ch;
如果ptr指向的是一个大写字母的字符串数组,那么输出的就是小写字母
2. 后缀运算符的优先级比前缀运算符要高,故*p++ ==> *(p++)
3. C语言不进行边界检查,故不能判断数组下标是否越界,所以程序员的自己检查下标是否越界
4. 引用是变量的别名,一旦和某个变量绑定后便不能更改,和指针不同
5. 输出9876 876,因为输出的是字符串
1.cout < <char(*ptr+ 'A '- 'a ') 这是什么意思(其中ptr指向一字符串数组)
2.*P++是不是先++再* 因为++是右结合?
3.当程序执行中 数组元素的下标超出所定义范围时 系统将给出 "下标越界 "的出错信息
这句话为什么不对?
4.引用可以指向不同的变量 只要类型一致就可以
这句话为什么错?
5. char s[]= "9876 ",*p;
for (p=s;p <s+2;p++)
std::cout < <p < < " ";
输出结果是什么?为什么?
------解决方案--------------------
1. 'A ' == 0x41, 'a ' == 0x61
故cout < < char(*ptr + 'A ' - 'a ') ==>
char ch = *ptr - 32;
cout < < ch;
如果ptr指向的是一个大写字母的字符串数组,那么输出的就是小写字母
2. 后缀运算符的优先级比前缀运算符要高,故*p++ ==> *(p++)
3. C语言不进行边界检查,故不能判断数组下标是否越界,所以程序员的自己检查下标是否越界
4. 引用是变量的别名,一旦和某个变量绑定后便不能更改,和指针不同
5. 输出9876 876,因为输出的是字符串