难得终于能有一个完整的可以完全用来学习的周六(为啥不说周末呢?因为明天全天都没法。。)
index:
一.一个 char 型能存储几个字符?
char数据所存的东西实际是ASCII,一个数字而已。一个char只能放一个字符。
此疑问来自于对字符数组和字符指针复习时,当定义一个字符型数组时,每个元素只能放一个字符。
比如:
char c=‘aasdjiasknnfi’; [ERROR]overflow in implicit constant conversion
(常量转换溢出。C语言中char, int, float, double,unsigned char, unsigned int 等数值有极限范围,当它们之间(隐式)转换时,可能因 数值极限 而超界 溢出。)
二.delete p和delete[] p的区别?
new []和
delete []
必须匹配使用。
new
delete
匹配使用。
数组量和普通变量的区别。
三.关于用串常量初始化字符指针的问题。
书上指出,相比于用定义数组的方式存储字符串,使用指针将方便的多。即:
char *p="student";
cout<<p<<endl; //输出student
cout<<*p<<endl; //输出s
cout<<&p<<endl; //输出地址
但实际运行时,系统将报警告为:
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
警告: 不建议使用从字符串常量到‘char*’的转换 [-Wwrite-strings]
所以其实这是个很尴尬的操作,“student”这个东西是个串常量,在内存里放在const区,当然不会让你想改就改。
具体可见:(转载须标明出处)http://blog.csdn.net/haoel/article/details/1395358
另外试了一下各种表达的输出效果。
四.数组地址迟来的实验。
所有没有亲手敲过的东西都不能说你懂了。。
这次的实验旨在回顾对数组名与地址那些剪不断理还乱的东西:
#include<iostream>
using namespace std;
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
cout<<a<<endl; //地址
cout<<&a<<endl; //地址
cout<<*a<<endl; //内容
cout<<a[0]<<endl; //内容
cout<<&a[0]<<endl; //地址
cout<<&a[1]<<endl; //地址
cout<<&a[2]<<endl; //地址
//cout<<&(a+1)<<endl;
//cout<<&(a+2)<<endl; [Error] lvalue required as unary '&' operand
cout<<a+1<<endl; //地址
cout<<*(a+1)<<endl;
cout<<*(a+2)<<endl;
//cout<<*a[0]<<endl;
}
&(a+1)这个操作看来是曲解比较厉害。。
查书发现也的确没有这个写法,这个意义可以(a+1)表示。