指针和数组和关系(指针数组数组指针)

指针VS数组

1数组和指针的关系

1.数组和指针的关系
数组的本质是一段连续存储变量的内存
指针的本质是一块指向变量地址的内存
但是一维数组名表示数组首元素的地址,所以可以把一维数组看成地址

#include
using namespace std;
//一维数组等价于指针,数组名等于数组首元素的地址
//arr = p
int main()
{
	int arr[10] = { 00,11,22,33,02,'2',};
	cout << arr << endl;
	int* p = arr;
	for (size_t i = 0; i < 10; i++)
	{
		cout << "数组地址为: " << p + i << " | " << &arr[i] << "|  " << arr + i << "  *|*   值为: " << *(p+i)<< " | "<<i[arr]<<" | " << arr[i] << endl;
		cout << p[i] << endl;
	}

}

2.数组指针

指向数组的指针叫数组指针,指向首元素的地址
int (*arr) [10]={1,2,3,4,5,6 }
什么意思呢? **arr—>指向了整个数组  [ ]**

#include 
using namespace std;

int main()
{
    // 带有 5 个元素的双精度浮点型数组
    double arr[5] = { 1000.0, 2.0, 3.4, 17.0, 50.0 };
    double* p;

    p = arr;

    // 输出数组中每个元素的值
    cout << "使用指针的数组值 " << endl;
    for (int i = 0; i < 5; i++)
    {
        cout << "*(p + " << i << ") : ";
        cout << *(p + i) << endl;
    }

    cout << "使用 arr 作为地址的数组值 " << endl;
    for (int i = 0; i < 5; i++)
    {
        cout << "*(arr+ " << i << ") : ";
        cout << *(arr + i) << endl;
    }

    return 0;
}

3.指针数组

数组里面全是int 类型的整型指针
意思是你 [ ]只可以放指针,你只可以把int p, intp1等等指针放进去而,这些指针又是指向别人的地址。

#include
using namespace std;
int main()
{
	int arr[10];
	char arr1[11];

	//指针数组——存放指针的数组
	int* parr[5] = {};//整型
	char* pc[10];
	for (size_t i = 0; i < 10; i++)
	{
		*parr = &arr[i];
		cout << *parr << endl;
	}
}

你可能感兴趣的:(c++,数据结构)