数组名和指针的区别

只有在作为函数的参数时,数组名和指针才是相同的(即“数组名就是指针”,只适用于这种情况)!其余情况一律不同!

第一:数组名不是指针!它们的大小不同

第二:数组名很像指针!比如,数组名可以赋给指针。又比如strcpy函数是以字符型指针为参数,但是我们可以传给它数组名!


数组名的本质:

1.数组名的内涵在于指代实体是一种数据结构,这种数据结构就是数组。(数组名带指一种数据结构:数组)

    int arr[10],即arr定义了int[10]这种数据结构的一个实例!(如果能写成int[10] arr就更好了)

    因此,用sizeof()求数组名的长度时结果是这种数据类型占内存的大小!


2.数组名的外延在于可以转换为指向其指代实体的指针,而且是一个指针常量(常量指针)。

    数组名可以转化为指针常量。因此,可以直接把数组名可以直接赋给指针,可以直接把数组名当作指针形参(其实,这两种本质上都是取数组的地址,赋值给另外的指针变量)。

    既然是指针常量当然不能对其自增自减等改变其值的操作。(arr++;错)



指针,无论是指向结构体,数组或者基本数据类型,都不包含原始数据结构的内涵。因此用sizeof()计算指针的大小都是4Bytes(in of 32bit).


3.数组名可能失去其数据结构内涵

    当把数组名作为指针形参传给函数时,那就失去了本身的内涵,仅是一个指针。

    在失去其数据结构内涵时,还失去了其常量内涵,意味着可以被改变,如进行自增或自减运算(操作)

    所以,数据名作为函数形参时,其全面沦落为一个普通指针!它的贵族身份被剥夺,成了一个地地道道的只拥有4个字节(for 32bit)的平民。(当数组名作为函数参数时,退化为指针)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值