`

指针数组和数组指针的区别

 
阅读更多

原文地址:http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html

 

 

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针

数组指针:a pointer to an array,即指向数组的指针

还要注意的是他们用法的区别,下面举例说明。

int* a[4]     指针数组     

                 表示:数组a中的元素都为int型指针    

                 元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*

int (*a)[4]   数组指针     

                 表示:指向数组a的指针

                 元素表示:(*a)[i]  

注意:在实际应用中,对于指针数组,我们经常这样使用:

1
2
typedef int* pInt;
pInt a[4];

这跟上面指针数组定义所表达的意思是一样的,只不过采取了类型变换。

代码演示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
int c[4]={1,2,3,4};
int *a[4]; //指针数组
int (*b)[4]; //数组指针
b=&c;
//将数组c中元素赋给数组a
for(int i=0;i<4;i++)
{
a[i]=&c[i];
}
//输出看下结果
cout<<*a[1]<<endl; //输出2就对
cout<<(*b)[2]<<endl; //输出3就对
return 0;
}

注意:定义了数组指针,该指针指向这个数组的首地址,必须给指针指定一个地址,容易犯的错得就是,不给b地址,直接用(*b)[i]=c[i]给数组b中元素赋值,这时数组指针不知道指向哪里,调试时可能没错,但运行时肯定出现问题,使用指针时要注意这个问题。但为什么a就不用给他地址呢,a的元素是指针,实际上for循环内已经给数组a中元素指定地址了。但若在for循环内写*a[i]=c[i],这同样会出问题总之一句话,定义了指针一定要知道指针指向哪里,不然要悲剧。

分享到:
评论

相关推荐

    指针数组和数组指针的区别.doc

    ### 指针数组与数组指针的区别 #### 一、基本概念介绍 在C/C++编程语言中,指针是一种十分重要的数据类型,它能够直接处理内存地址,实现高效的数据访问与操作。而在指针的基础上,衍生出了两种常见的结构:指针...

    指针进阶之指针数组和数组指针

    "指针进阶之指针数组和数组指针" 指针数组和数组指针是C语言中两个重要的概念,理解它们对指针的使用非常重要。下面将对指针数组和数组指针进行详细的解释和分析。 一、指针数组 指针数组是数组,用于存放指针的...

    彻底理解指针,指针数组和数组指针,指针函数和函数指针

    ### 彻底理解指针,指针数组和数组指针,指针函数和函数指针 #### 一、基础知识 在计算机编程中,指针是一个非常重要的概念,尤其是在C/C++这样的语言中更是如此。简单来说,指针是一种变量,但它存储的不是普通的...

    指针数组和数组指针C.docx

    在C语言中,指针和数组是两种非常重要的数据结构,它们可以被组合成更复杂的类型,如指针数组和数组指针。这两种概念在处理大量数据或进行内存操作时非常有用。本文将深入探讨指针数组和数组指针的概念,并通过示例...

    C的指针数组和数组指针

    ### C的指针数组和数组指针详解 #### 指针基础概念 在学习“指针数组”和“数组指针”的概念之前,我们首先需要理解什么是“指针”。指针是一种数据类型,用于存储内存地址。在C语言中,指针变量的类型决定了它...

    C++指针数组和数组指针的详细使用说明(含完整示例)

    指针数组和数组指针的主要区别在于: 1. 定义方式:指针数组先定义指针类型,然后定义数组大小,如`int* ptr_array[5]`;而数组指针先定义指向的数组类型,然后定义指向该数组的指针,如`int (*ptr)[5]`。 2. 初始...

    指针数组和数组指针

    识别const到底是修饰指针还是指针所指的对象,还有一个较为简便的方法,也就是沿着*号划一条线:

    数组指针和指针数组的区别

    一、指针数组和数组指针的定义 首先,指针数组是一个数组,其中每个元素都是指针,数组占多少个字节由数组本身决定。例如:int *p1[10];这里,p1 是一个指针数组,包含 10 个指向 int 的指针。 而数组指针是一个...

    c++指针数组.rar

    3. 指针数组和数组指针的区别:数组指针是一个指针,它指向一个数组的首地址;而指针数组是一个数组,它的每个元素是独立的指针。 总之,C++中的指针数组是一种强大的工具,能够帮助程序员处理复杂的任务,如动态...

    指针数组与数组指针的介绍

    本文是针对C语言而写的指针数组和数组指针的区别,希望能给予见解

    指针数组与数组指针总结更新

    在理解了指针数组和数组指针的概念后,我们可以总结如下: - 指针数组是一组存放指针的数组,其本质是数组。 - 数组指针是一个指针,它指向一个数组,其本质是指针。 在实际编程中,指针数组通常用于存储多个相关...

    指针数组与数组指针

    当我们深入探讨指针时,会遇到两个看似相似但实际上有很大区别的概念——指针数组和数组指针。 #### 数组指针的定义 数组指针是一种特殊的指针类型,它指向的是一个数组(通常是一维数组)。这种类型的指针可以...

    指针与数组区别,实验与指导-数组指针字符串

    1. 使用指针数组来实现三整数的排序。 ```c void swap(int *pt1,int *pt2){ int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; } void exchange(int *q1,int *q2,int *q3){ if(*q1&lt;*q2)swap(q1,q2); if(*q1&lt;*q3)...

    指针与数组.docx 指针数组:数组类型 *数组名数组长度

    本文将详细解析指针数组和数组指针的概念,以及它们在访问二维数组时的区别。 首先,我们要明确两个定义: 1. **指针数组**:这种结构是一个数组,其每个元素都是一个指针。例如,`int *parr[5]` 定义了一个包含5...

    函数指针与函数指针数组,多层

    这展示了函数指针可以如何嵌套和存储,尽管在实际编程中这样的结构可能较少见,但理解这种抽象概念有助于深入理解C++的指针和数组特性。 总之,这个例子展示了C++中函数指针的基本用法,包括如何声明、定义和传递...

    C语言指针数组函数笔记

    "C语言指针数组函数笔记" ...本笔记总结了C语言中的指针和数组相关知识点,涵盖了变量、指针变量、指针运算符、数组和指针数组函数等内容。通过阅读本笔记,读者可以更好地理解和应用C语言中的指针和数组。

    请用指针数组的方法将字符串排序

    接下来,实现一个排序函数`sort`,该函数接收指针数组和数组长度作为参数。在这个函数中,我们使用了经典的冒泡排序算法来比较并交换字符串。通过`strcmp`函数比较两个字符串的大小,如果第一个字符串大于第二个字符...

    c语言指针数组-·详解数组指针与指针数组

    在C语言中,指针和数组是两种非常重要的数据结构,它们可以组合成“指针数组”或“数组指针”,这为处理复杂的数据结构提供了灵活性。本文将深入讲解这两种概念。 一、数组指针与指针数组的区别 1. 数组指针:数组...

Global site tag (gtag.js) - Google Analytics