C++基础(20)C/C++ 中元素存储在连续的内存位置

559 阅读2分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第20篇文章,点击查看活动详情

示例:

用于演示数组元素存储在连续位置的 C++ 程序

#include <iostream>
using namespace std;

int main()
{
	// 10 个整数的数组。 如果 arr[0] 存储在地址 x,则 arr[1] 存储在 x + sizeof(int) arr[2] 存储在 x + sizeof(int) + sizeof(int) 等等。
	int arr[5], i;

	cout << "Size of integer in this compiler is "
		<< sizeof(int) << "\n";

	for (i = 0; i < 5; i++)
		// 在变量名前使用“&”会产生变量的地址。
		cout << "Address arr[" << i << "] is " << &arr[i]
			<< "\n";

	return 0;
}

用于演示数组元素存储在连续位置的 C 程序

#include <stdio.h>
int main()
{
	// 10 个整数的数组。如果 arr[0] 存储在地址 x,则 arr[1] 存储在 x + sizeof(int) arr[2] 存储在 x + sizeof(int) + sizeof(int) 和 很快。
	int arr[5], i;

	printf("Size of integer in this compiler is %lu\n",
		sizeof(int));

	for (i = 0; i < 5; i++)
		// 在变量名前使用“&”会产生变量的地址。
		printf("Address arr[%d] is %p\n", i, &arr[i]);

	return 0;
}

输出

Size of integer in this compiler is 4
Address arr[0] is 0x7fff7a02db20
Address arr[1] is 0x7fff7a02db24
Address arr[2] is 0x7fff7a02db28
Address arr[3] is 0x7fff7a02db2c
Address arr[4] is 0x7fff7a02db30

遍历数组的另一种方法

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int arr[6]={11,12,13,14,15,16};
	// Way 1
	for(int i=0;i<6;i++)
		cout<<arr[i]<<" ";
	
cout<<endl;
	// Way 2
	cout<<"By Other Method:"<<endl;
	for(int i=0;i<6;i++)
		cout<<i[arr]<<" ";
	
	cout<<endl;

	return 0;
}
#include<stdio.h>

int main(void)
{
	int arr[6] = {11, 12, 13, 14, 15, 16};
	
	// Way 1
	for(int i = 0; i < 6; i++)
		printf("%i ", arr[i]);

	printf("\n");
	
	// Way 2
	printf("By Other Method: \n");
	
	for(int i = 0; i < 6; i++)
		printf("%i ", i[arr]);

	printf("\n");

	return (0);
}

输出

11 12 13 14 15 16 
By Other Method:
11 12 13 14 15 16 

数组与指针 
数组和指针是两个不同的东西(我们可以通过应用 sizeof 来检查)。之所以会发生混淆,是因为数组名称表示第一个元素的地址,并且数组总是作为指针传递(即使我们使用方括号)。 C++中的向量是什么? 
C++ 中的向量是 STL 中表示数组的类。向量相对于普通数组的优点是, 

  • 当我们声明一个向量时,我们不需要传递大小作为额外的参数,即,向量支持动态大小(我们最初不必指定向量的大小)。我们还可以调整向量的大小。
  • 向量具有许多内置功能,例如删除元素等。

如果大家在阅读我的文章的时候发现了一些错误,欢迎在评论区留言告诉我。我是一个正在学习C++的蒟蒻,关注我,我们一起加油。