漫谈C指针第四讲---指针与数组

本文详细解析了在C语言中如何使用数组名和指针访问数组元素,对比了数组名与指针变量的区别,并通过实例代码说明了两者之间的细微差别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过数组名访问数组元素

看下面代码:

int i, a[] = {3,4,5,6,7,3,7,4,4,6};
for (i = 0; i <= 9; i++)
{
    printf("%d\n", a[i]);
}

很显然,它是显示a 数组的各元素值。

我们还可以这样访问元素,如下:

int i, a[] = {3,4,5,6,7,3,7,4,4,6};
for (i = 0; i <= 9; i++)
{
    printf("%d\n", *(a+i));
}

它的结果和作用完全一样。

通过指针访问数组元素

int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a; /*请注意数组名a直接赋值给指针pa*/
for (i = 0; i <= 9; i++)
{
    printf("%d\n", pa[i]);
}

很显然,它也是显示a 数组的各元素值。

另外与数组名一样也可如下:

int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a;
for (i = 0; i <= 9; i++)
{
    printf("%d\n", *(pa+i));
}

看pa = a,即数组名赋值给指针,以及通过数组名、指针对元素的访问形式看,它们并没有什么区别,从这里可以看出:数组名其实也就是指针。难道它们没有任何区别?有,请继续。

数组名与指针变量的区别

请看下面的代码:

int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a;
for (i = 0; i <= 9; i++)
{
    printf("%d\n", *pa);
    pa++; /*注意这里,指针值被修改*/
}

可以看出,这段代码也是将数组各元素值输出。不过,你把循环体{}中的pa改成a试试。你会发现程序编译出错,不能成功。看来指针和数组名还是不同的。其实上面的指针是指针变量,而数组名只是一个指针常量。这个代码与上面的代码不同的是,指针pa在整个循环中,其值是不断递增的,即指针值被修改了。数组名是指针常量,其值是不能修改的,因此不能类似这样操作:a++

前面pa[i],*(pa+i)处,指针pa的值是使终没有改变。所以变量指针pa与数组名a可以互换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值