`

数组名和指针的区别

    博客分类:
  • C++
阅读更多
许多程序员对数组名和指针的区别不甚明了,他们认为数组名就是指针,而实际上数组名和指针有很大区别,在使用时要进行正确区分,其区分规则如下:


   规则1 数组名指代一种数据结构,这种数据结构就是数组
                    char str[10];
                   char *pStr = str;
                   cout << sizeof(str) << endl;
                   cout << sizeof(pStr) << endl;

  输出结果为:
                        10
                           4
  这说明数组名str指代数据结构char[10]。

      规则2 数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改
              char str[10];
              char *pStr = str;
               str++; //编译出错,提示str不是左值 
              pStr++; //编译正确

  规则3 指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址

  规则4 数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;很遗憾,在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改

例如:
  void arrayTest(char str[])
  {
     cout << sizeof(str) << endl;   //输出指针长度
   str++; //编译正确 
   }
  int main(int argc, char* argv[])
  {
    char str1[10] = "I Love U";
    arrayTest(str1); 
     return 0;
  }
分享到:
评论

相关推荐

    数组与指针区别(很全面)

    如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,笔者就不甚欣慰了。借此文,笔者站在 无数对知识如饥似渴的中国程序员之中,深深寄希望于国内的计算机图书编写者们,能以"深入探索"的思维方式和精益求精...

    c语言中 数组名和指针的区别

    c语言中 数组名和指针的区别 来自知网的论文

    C/C++数组名与指针区别深层探索

    指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多 程序设计者就被搞糊涂了。而许多的大学老师,他们在C 语言的教学过程中也错误得给学生讲解:“数组名就是...

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

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

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

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

    数组与指针应用详解,区别

    然而,实际上数组名与指针有着本质的区别。 第一点,数组名不是指针。从 sizeof vận算符的返回值可以看出,数组名的大小是数组的大小,而指针的大小是指针的大小。例如,在 WIN32 平台下,指针的大小为 4 字节,而...

    CC++数组名与指针区别深入探索

    CC++数组名与指针区别深入探索 CC++数组名与指针区别深入探索

    数组的指针和指向数组的指针变量

    数组的指针和指向数组的指针变量 数组的指针和指向数组的指针变量是编程语言中一个重要的概念。数组的指针是指向数组在内存中的起始地址,而指向数组的指针变量是指向数组元素的指针变量。 概念: * 数组的指针:...

    数组和指针练习题目(精选)

    数组和指针练习题目(精选) 在编程语言中,数组和指针是非常重要的概念,它们的应用非常广泛,理解基础是非常必要的。本节将通过多种练习题目来加深对数组和指针的理解。 指针基础 指针是一种特殊的变量,它可以...

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

    数组指针:类型名 (*指针名)[数组长度]; 例:int (*parr)[5]; 现在我们再来通过上面的定义来分析一下指针数组和数组指针。 int *parr[5];因为优先级的关系,parr先与[]结合,说明parr是一个数组,然后再与*结合说明...

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

    这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。 还...

    数组和指针的区别

    数组和指针的区别

    数组和指针之间的区别与联系

    在C语言中,数组和指针是两个非常重要的概念,它们之间既有明显的区别,也有紧密的联系。数组是一种数据结构,而指针则是一种特殊的数据类型,用于存储内存地址。理解这两者的差异和关联对于深入学习C语言至关重要。...

    数组与指针的艺术.doc

    这一特性使得数组名在某些场合下可以与指针等价使用,但两者本质上是有区别的。 文章接下来将详细分析数组与指针的关系,包括它们的存储方式、动态分配、传递参数等方面,以帮助读者深入理解它们的运作机制。此外,...

    数组指针和指针数组示例

    数组指针和指针数组

    C_C++数组名与指针区别探索

    指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。

    指针数组与数组指针与二级指针

    指针与二维数组 数组指针 指针数组 多级指针

Global site tag (gtag.js) - Google Analytics