C++学习 Day 2(干货满满~~)

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++学习 Day 2(干货满满~~)_第1张图片

样例输出

 C++学习 Day 2(干货满满~~)_第2张图片

 

问与答

:为何要不怕麻烦,去初始化静态数组的元素?
数组不同于其他类型的变量,除非进行初始化,否则它将包含无法预测的值,因为内存保留
最后一次操作时的内容。通过初始化数组,可确保内存包含确定的值。
:需要基于前一个问题所说的原因初始化动态数组的元素吗?
实际上,不需要。动态数组相当聪明,无需将其元素初始化为默认值,除非应用程序要求数
组包含特定的初始值。
:在可以选择的情况下,您会使用需要以空字符结尾的 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
按位运算符 NOT(~)、AND(&)、OR(|)和 XOR(^)
  逻辑运算符和按位运算符之前的差别在于,按位运算符返回的并非布尔值,而是对操作数对应位执行指定运算的结果。
  C++ 让您能够执行按位 NOT OR AND XOR (异或)运算,它们分别使用 ~将每位取反、使用| 对相应位执行 OR 运算、使用 & 对相应位执行 AND 运算、使用 ^ 对相应位执行 XOR运算。其中后三个运算符对变量与选择的数字(通常是位掩码)执行相应的运算。

 

按位右移运算符(>>)和左移运算符(<<)

移位运算符将整个位序列向左或向右移动,其用途之一是将数据乘以或除以 2n

下面的移位运算符使用示例将变量乘以 2
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 ,相当于将数字分别翻了一番和两番!

运算符表一览

C++学习 Day 2(干货满满~~)_第3张图片

 运算符优先级(加括号yyds)

C++学习 Day 2(干货满满~~)_第4张图片

 

问与答 

问:我需要将一个数字除以 3 再翻倍,为此使用了如下代码。这些代码有问题吗?
int result = Number / 3 << 1;
答: 有问题!为何不添加括号,让这行代码对其他程序员来说更容易理解呢?添加注释也没有害
处呀。

注意

sizeof(…) 看起来像函数调用,但它并不是函数,而是运算符。

好啦,今天的c++学习到此结束,我使用的书籍是《21天学通c++》,准备先对c++来一个全面的印象。但是这本书好像是给没有C基础的人学的。。。。。不管了,如果有宝子想要C资源分享的可以三连评论,我会私你的哦~~

C++学习 Day 2(干货满满~~)_第5张图片 

 C++学习 Day 2(干货满满~~)_第6张图片

 

你可能感兴趣的:(C++学习,c++,算法,c语言)