个人学习C++过程中对const的总结:初始化系列之用字面值常量与其他类型的值初始化的区别(一)
2016-04-04 22:49
417 查看
const这个系列博大精深,在学习过程一点一点积累记录。但是由于随笔在发布之后不能修改,有了新的想法之后不能再在原随笔上修改,只好用一个个系列来慢慢积累。
哈哈,在发布之后发现是可以继续编辑的,好吧,不管了,这种方式挺好。
正文:
昨晚接触到一个算法题目,回文字符串,在网上找了某段代码,但是发现有点问题,原形大概如下:
....
const int len=mystr.size(); //mystr是string的一个实例,其实我挺奇怪这里为什么用int而不是string::size_type或者auto,算了,这个不是这里重点
int array[len][len];
....
然后上面数组的定义错误,原因是len不是常量值。
刚才又遇到另外一种情况:
...
const int len=10;
int array[len][len];
...
在这里代码没有问题。后来结合书和网上的资料。第二种情况是在编译过程中初始化,然后在编译过程中已经用10把len替换掉,所以数组定义的代码能通过编译。
但是第一种情况,len需要在运行过程中才初始化,在编译过程中系统不知道len是什么,所以编译出错。
另外,除了函数,用普通的变量也是不行的,例如下面的代码:
int a=10;
const int len=a;
int array[len][len];
这是个人在学习中的一些收获,各路大神不喜勿喷。
哈哈,在发布之后发现是可以继续编辑的,好吧,不管了,这种方式挺好。
正文:
昨晚接触到一个算法题目,回文字符串,在网上找了某段代码,但是发现有点问题,原形大概如下:
....
const int len=mystr.size(); //mystr是string的一个实例,其实我挺奇怪这里为什么用int而不是string::size_type或者auto,算了,这个不是这里重点
int array[len][len];
....
然后上面数组的定义错误,原因是len不是常量值。
刚才又遇到另外一种情况:
...
const int len=10;
int array[len][len];
...
在这里代码没有问题。后来结合书和网上的资料。第二种情况是在编译过程中初始化,然后在编译过程中已经用10把len替换掉,所以数组定义的代码能通过编译。
但是第一种情况,len需要在运行过程中才初始化,在编译过程中系统不知道len是什么,所以编译出错。
另外,除了函数,用普通的变量也是不行的,例如下面的代码:
int a=10;
const int len=a;
int array[len][len];
这是个人在学习中的一些收获,各路大神不喜勿喷。
相关文章推荐
- C++二进制兼容问题及解决方法
- C++ 文件操作
- C语言学习007:重定向标准输入和输出
- C++面向对象编程分享06----20160404_李楚煌
- C++ Primer 读书笔记-ch02
- 【day0404 C++】类的成员函数
- C++多态公有继承
- 为什么Windows 系统中用反斜杠表示路径,而C语言教材中都是用斜杠表示头文件的路径?
- #pragma once与#ifndef #define #endif的区别
- c/c++实现简单计算器
- c++智能指针的不断演化
- c++ map按key或value的值分别进行排序
- 关于qsort函数
- C++访问限制:private public protect经典诠释
- C++常用用法总结
- c++类中的六种默认函数
- 一些C++ STL泛型算法整理
- void类型及void指针
- c++内存分配方式
- MFC——ComBox用法大全