`

指针和数组之区别

阅读更多

数组名可以当作一个指针来用,数组名可以用*取其中的值,指针也可以用[]解引用,但它
们还是有一些区别的,我知道的有3个:

1.数组名不可以作为左值,关于这一点,可以将数组名理解为指针常量
 int a[10],*b;
 b是一个指针型变量,a是一个数组。
 b是左值,可以存在b=a;
 a不是左值,不能出现在"="左边。
 a相当于一个常量,类型为数组。

2.对数组名进行sizeof运算时,结果是整个数组占用空间的大小,而sizeof(指针)得到的值
 是编译器分配给指针(也就是一个地址)的内存空间。(对于比较老的编译器如TC,指针所占
 字节数通常是2,对于现在常见的编译器一般是4)

3.对数组名作&(取地址)运算,得到的还是数组第一个元素的地址,对指针取地址时得到的
 结果是指针所在的地址,也就是指向这个指针的指针。

4 运算
 一维数组和指针在"*"运算是都有访存操作。
 多维数组在"*"运算只是类型改变,没有具体操作。
 指针变量在"*"运算时先访存,获得地址,再取地址对应内存中的值。

 指针变量在"&"运算时,得到指针变量的地址。
 数组在"&"运算只是类型改变,没有具体操作。

 获取数组大小之方法:


# define size_of_array( x) ( sizeof ( x) / sizeof ( x[ 0] ) )


5 字符串指针与字符数组之区别:

 char * p1 = "Hello World" ;       //分配字符串常量,然后赋给 p1
 char p2[ 20] = "Hello World" ;    //分配一个数组,然后初始化为字符串

p1可以指向别的地方,但hello world不能更改,
eg:

* p1 = 'h' ;


p2不能指向别的地方,但hello world可以更改
eg:

p2[ 0] = 'h' ;


第一个字符串指针的操作等价于:

  const char S[ 12] = "Hello World" ;
  char * p1;
  p1 = & S; // p1 = S;
  char p2[ 20] ;
  strcpy ( p2, S) ; 
 

 

分享到:
评论

相关推荐

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

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

    指针和数组学习笔记

    虽然指针和数组有很多相似之处,但在实际应用中也存在一些重要的区别: ##### 1. 大小不同 - 数组:数组具有固定大小,一旦定义后就不能改变。 - 指针:指针本身只占用一个地址空间,但它可以指向任何大小的内存...

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

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

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

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

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

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

    附录一 再论指针和数组.PPT

    本章将对指针和数组进行详细的分析和比较,帮助读者掌握指针和数组的区别和相同点,并掌握如何使用指针和数组。 1. 指针与数组的不相同 指针和数组在访问方式和存储方式上有很大的区别。数组是一块连续的内存空间...

    C语言中指针和数组区别的分析.pdf

    本文将详细分析指针和数组在C语言中的区别,并探讨它们的相同之处。 首先,我们需要明确指针和数组在C语言中保存数据的内容是不同的。指针保存的是数据的内存地址,而数组保存的是数据的值。这是两者本质上的区别。...

    11.3 指针和数组.7z

    标题“11.3 指针和数组.7z”指的是一个压缩包,其中包含与C语言编程相关的示例代码,重点讲解了指针和数组的概念。在C语言中,指针和数组是两个非常重要的概念,它们是理解和操作内存的基础。 指针是C语言中的一个...

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

    在 C++ 编程中,指针和数组是两个基本概念。指针是一种变量,它存储了另一个变量的内存地址,而数组是一组相同类型的变量的集合。 understanding the difference between pointers and arrays is crucial for ...

    C的指针数组和数组指针

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

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

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

    指针和数组指针对数组元素的调用.txt

    为什么会出现指针和数组指针对数组元素调用的方式不同呢? 答:*p是一个指针变量,p指向的其实是a[0]或a[0][0]; 而(*p)[2]是一个数组指针,p指向的其实是a[0],a[1]或a[0][0],a[0][1]这样的形式; 也就是说*p中的p...

    指针数组和数组指针

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

    c语言 中最使人头痛的指针和数组问题

    在C语言中,指针和数组是两个非常关键的概念,它们是C语言的灵魂,也是许多初学者感到困惑的地方。这两个概念的理解与运用,对于编写高效、灵活的代码至关重要。 首先,我们来深入探讨指针。指针是C语言中一种特殊...

    经典指针和数组教程 ָ

    经典指针和数组教程 ָ,二维数组的使用,指针的使用

    java双指针和数组.zip

    本资料包“java双指针和数组.zip”可能是关于如何在Java编程中应用双指针解决数组相关问题的学习记录,具体包含一个名为"algorithm-learning-record-master"的文件夹,可能包含了源代码、笔记、练习案例等内容。...

    易语言指针操作字符串和数组

    本篇文章将深入探讨易语言中如何使用指针来操作字符串和数组,以及如何通过指针数组进行参数传递。 1. **指针基础**: - 在易语言中,指针是一个变量,存储的是其他变量的内存地址。指针变量需要先声明,然后通过`...

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

    在C++编程中,指针和数组是两种重要的数据结构,而指针数组和数组指针则是它们的组合形式,提供了更加灵活的方式来处理和操作内存中的数据。本文将详细讲解这两种概念及其用法。 首先,指针数组是一个数组,其每个...

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

    - 这意味着原始数组的大小信息在函数调用过程中丢失了。 **示例代码**: ```cpp void arrayTest(char str[]) { cout (str) ; // 输出4(或8),因为str被当作指针处理 } int main() { char str1[10] = ...

Global site tag (gtag.js) - Google Analytics