int manyNumbers [500000] = {0};
char myCharacters [5];
这样的数组被称为静态数组,因为在编译阶段,它们包含的元素数以及占用的内存量都是固定的。
Warning:访问数组时,如果超越其边界,结果将是无法预料的。在很多情况下,这将导致程序崩溃。应不惜一切代价避免访问数组时超越其边界。这种错误被称为篱笆柱(fence-post)错误。
int threeRowsThreeColumns [3][3] = {{-501, 206, 2016}, {989, 101, 206}, {303,456, 596}};(二维数组初始化)
#include
#include/*矢量*/
using namespace std;
int main() {
vector dynArray (3);
dynArray[2]= 789;
cout << "Number of integers in array: " << dynArray.size() << endl;
cout << "Enter another element to insert" << endl;
int newValue=0;
cin>>newValue;
dynArray.push_back(newValue);
cout << "Number of integers in array: " << dynArray.size() << endl;
cout << "Last element in array: ";
cout << dynArray[dynArray.size() - 1] << endl;
return 0;
}
/*
SAMPLE OUT:
Number of integers in array: 3
Enter another element to insert
2017
Number of integers in array: 4
Last element in array: 2017
*/
std::string是动态的,在需要存储更多数据时其容量将增大
样例程序(主体部分)
样例输出
问与答
问 :为何要不怕麻烦,去初始化静态数组的元素?答 : 数组不同于其他类型的变量,除非进行初始化,否则它将包含无法预测的值,因为内存保留最后一次操作时的内容。通过初始化数组,可确保内存包含确定的值。问 :需要基于前一个问题所说的原因初始化动态数组的元素吗?答 : 实际上,不需要。动态数组相当聪明,无需将其元素初始化为默认值,除非应用程序要求数组包含特定的初始值。问 :在可以选择的情况下,您会使用需要以空字符结尾的 C 风格字符串吗?答 : 除非有人拿枪指着您的头。 C++ std::string 更安全,并提供了很多功能,任何优秀的程序员都应避免使用 C 风格字符串。问 :计算字符串长度时,包括末尾的空字符吗?答 : 不包括。字符串 “Hello World” 的长度为 11 ,这包括其中的空格,但不包括末尾的空字符。问 :如果要用 char 数组标识 C 风格字符串,应将数组声明为多长?答 : 这是 C 风格字符串最复杂的地方之一。数组的长度应比它可能包含的最长字符串长 1 ,以便在末尾包含空字符。如果 char 数组可能存储的最长字符串为 “Hello World” ,则应将该数组的长度声明为 12 ( 11 + 1 )。
合法换行代码()
cout << "Hello \
World" << endl; // split to two lines is OK
/*
或者
*/
cout << "Hello "
"World" << endl; // two string literals is also OK
逻辑运算符和按位运算符之前的差别在于,按位运算符返回的并非布尔值,而是对操作数对应位执行指定运算的结果。C++ 让您能够执行按位 NOT 、 OR 、 AND 和 XOR (异或)运算,它们分别使用 ~将每位取反、使用| 对相应位执行 OR 运算、使用 & 对相应位执行 AND 运算、使用 ^ 对相应位执行 XOR运算。其中后三个运算符对变量与选择的数字(通常是位掩码)执行相应的运算。
移位运算符将整个位序列向左或向右移动,其用途之一是将数据乘以或除以 2n 。
int doubledValue = num << 1; // shift bits one position left to double value
下面的的移位运算符使用示例将变量除以 2:
int halvedValue = num >> 1; // shift bits one position right to halve value
输入的数字为 16 ,其二进制表示为 1000 。第 9 行将它向右移 1 位,结果为 0100 ,即 8 ,这相当于将其减半。第 10 行向右移两位,从 1000 变成了 00100 ,即 4 。第 11 和 12 行的左移运算符的效果完全相反。向左移 1 位时结果为 10000 ,即 32 ,向左移动两位的结果为 100000 ,即 64 ,相当于将数字分别翻了一番和两番!
运算符表一览
运算符优先级(加括号yyds)
问:我需要将一个数字除以 3 再翻倍,为此使用了如下代码。这些代码有问题吗?int result = Number / 3 << 1;答: 有问题!为何不添加括号,让这行代码对其他程序员来说更容易理解呢?添加注释也没有害处呀。
注意:
sizeof(…) 看起来像函数调用,但它并不是函数,而是运算符。
好啦,今天的c++学习到此结束,我使用的书籍是《21天学通c++》,准备先对c++来一个全面的印象。但是这本书好像是给没有C基础的人学的。。。。。不管了,如果有宝子想要C资源分享的可以三连评论,我会私你的哦~~