171201—备忘录

来源:互联网 发布:电极式暖手宝 知乎 编辑:程序博客网 时间:2024/06/05 19:20

难得终于能有一个完整的可以完全用来学习的周六(为啥不说周末呢?因为明天全天都没法。。)

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;    cout<<&p<<endl;  //输出s 

但实际运行时,系统将报警告为:

[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)表示。

原创粉丝点击