171201—备忘录

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值