#include<iostream.h>
void main()
{
//数组指针
//例如:int (*p)[3];//p只是一个指针变量
//只是一个指针变量而已,重点在只有一个指针,其次它是指向一个数组的指针,保存一个代表整个数组的地址,
//虽然也是保存数组的首地址,但是这个首地址是代表整个数组的,而不是仅仅是数组首元素(【0】号)的地址
//即这个指针值+1,就是跨过整个数组,而不是第【1】个元素的地址
//(1)
int a[3];
int (*p)[3]=&a;//p是一个指针变量,这个指针变量可以指向含有3个整型元素的数组
//即可以保存代表整个数组的地址
//p+1相当于跨过整个数组,而非一个简单的整型元素
//int (*p)[3]=a//错误,cannot convert from 'int [3]' to 'int (*)[3]'
//a是代表首元素的地址,等价于&a[0]
//(2)
//*p=a;//error C2106: '=' : left operand must be l-value
//*p是个指针常量不可以赋值,不过可以输出
cout<<"*p="<<*p<<endl;//是一个地址值,第一个元素的地址,等价于*(&a),等价于a
cout<<"*(&a)="<<*(&a)<<endl;
cout<<"a="<<a<<endl;
int *ptr=a;//ptr保存的是首元素的地址
ptr=*p;
cout<<"ptr="<<ptr<<endl;
cout<<endl<<endl;
//(3)
int array[3][3];
int (*p1)[3]=array;//array代表首行地址,等价于&array[0]
p1=&array[1];//p1现在为第【1】行的地址,代表第【1】行整行的地址
p1++;//p1现在为第【2】行的地址,代表第【2】行整行的地址,++移动了一整行
cout<<"array="<<array<<endl;
cout<<"p1="<<p1<<endl;
cout<<endl<<endl;
//指针数组
//例如:int *p[3];//p是一个数组
//表示这个数组里的每一个元素都是一个指针
//(1)指向某行首元素,保存某行首元素的地址值
int num[3][3];
// int *p2[3]=num[0];//: cannot convert from 'int [3]' to 'int *[3]'
// int *p2[3]=num;//cannot convert from 'int [3][3]' to 'int *[3]'
int *p2[3]={num[0],num[1],num[2]};
for(int i=0;i<3;i++)
{
p2=&num[0];
//p2=num;//p2指针数组的三个元素依次赋值为num三行首元素的地址值
cout<<"p2["<<i<<"]="<<p2<<endl;
}
cout<<endl<<endl;
//(2)指向某个元素,保存某个元素的地址值
int b[3];
int *p3[3]={&b[0],&b[1],&b[2]};
// p3[1]=num[0];//可以,num[0]代表第【0】行首元素地址
// p3[1]=&array[1];//错误,&array[1]是代表第【1】行的地址
for(i=0;i<3;i++)
{
cout<<"p3["<<i<<"]="<<p3<<endl;
}
cout<<endl<<endl;
//指针的指针
//指针数组名就是指向指针的指针(即二级指针),如上面的p3
int **p4;
p4=p3;//p3代表p3数组本身,即指针数组本身首元素的地址
for(i=0;i<3;i++)
{
cout<<"p4="<<p4<<endl;
cout<<"*p4="<<*p4<<endl;//*p4是p3数组元素中的值,即依次为b数组三个元素的地址
p4++;//只移动了一个元素的位置
}
cout<<endl<<endl;
}
分享到:
相关推荐
指针数组与数组指针是两种不同的数据结构概念,在C语言中都有着广泛的应用。它们都涉及到指针的使用,但其作用和结构却有本质上的区别。 首先,指针数组是一个数组,它的元素都是指针类型。这意味着,指针数组可以...
本篇文章将深入探讨指针数组、数组指针以及二级指针这三种概念。 首先,我们要理解基本的指针概念。指针是变量的地址,当我们声明一个指针变量时,例如`int *p`,我们是在定义一个可以存储整型变量地址的指针。通过...
本文是针对C语言而写的指针数组和数组指针的区别,希望能给予见解
### 彻底理解指针,指针数组和数组指针,指针函数和函数指针 #### 一、基础知识 在计算机编程中,指针是一个非常重要的概念,尤其是在C/C++这样的语言中更是如此。简单来说,指针是一种变量,但它存储的不是普通的...
指针数组与数组指针的总结整理
### 指针数组与数组指针的区别 #### 一、基本概念介绍 在C/C++编程语言中,指针是一种十分重要的数据类型,它能够直接处理内存地址,实现高效的数据访问与操作。而在指针的基础上,衍生出了两种常见的结构:指针...
数组指针和指针数组的区别 在 C 语言中,数组指针和指针数组是两个容易混淆的概念,但它们之间有着巨大的区别。本文将详细讲解数组指针和指针数组的定义、内存布局、区别,并通过实例代码加深读者的理解。 一、...
在IT领域,特别是编程技术中,使用指针数组来对字符串进行排序是一种高效且常见的方法。这种方法不仅展示了C语言的强大功能,还体现了数据结构与算法的重要性。以下是对“用指针数组的方法将字符串排序”这一知识点...
C++指针数组内存释放 C++指针是一种基本变量,包含一个实际的数据,该数据代表一个可以找到实际信息的内存地址。指针是C++编程中非常重要的概念,许多程序和思想依靠指针作为他们设计的基础。 定义指针变量 定义...
一、指针与数组的基础知识 1. 指针:在C++中,指针是一个变量,它存储了另一个变量的地址。通过指针,我们可以间接访问和修改被指向的变量。指针的声明通常包含类型和指针名,如`int* p`表示一个指向整型变量的指针...
#### 二、指针与指针数组的概念 1. **指针**:在C语言中,指针是一种变量类型,它可以存储内存地址。通过指针可以访问该地址处的数据。 2. **指针数组**:指针数组是指数组的元素都是指针类型的一种数据结构。每...
识别const到底是修饰指针还是指针所指的对象,还有一个较为简便的方法,也就是沿着*号划一条线:
指针数组在C语言中的应用 在C语言中,指针数组是一种重要的数据结构,广泛应用于字符串处理、矩阵运算和动态存储管理等领域。本文将详细介绍指针数组的定义、使用和应用。 一、指针数组的定义 指针数组是一种特殊...
### C的指针数组和数组指针详解 #### 指针基础概念 在学习“指针数组”和“数组指针”的概念之前,我们首先需要理解什么是“指针”。指针是一种数据类型,用于存储内存地址。在C语言中,指针变量的类型决定了它...
指针与指针数组也是常见的组合,指针数组可以存储一系列的指针,这样可以方便地管理和操作一组对象。例如,`int *ptrs[10];`定义了一个可以存储10个整型指针的数组。 最后,要特别注意指针的生命周期和空指针。未...
本篇将通过两个实例深入探讨指针与指针数组的应用。 首先,我们来看"指针.cpp"这个文件。在这个文件中,可能包含了一个简单的程序,演示了如何声明、初始化和使用指针。在C++中,我们可以声明一个指向特定类型变量...
C语言指针数组专项分析图示讲解 本文详细讲解了指针数组的使用方式以及其原理,及一些内存开辟函数的使用方法及原理。通过对指针数组的学习,我们需要了解指针及内存开辟函数。 首先,指针数组是指一个数组中每一...