标题:关于数组的指针交换的问题
只看楼主
xxx9527
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-10
结帖率:0
已结贴  问题点数:20 回复次数:5 
关于数组的指针交换的问题
# include <stdio.h>
# include <stdlib.h>
void main()
{
    int a[5] = {1,2,3,4,5};
    int *p,*q,i;
    int * temp ;
//第1种交换方式,提示错误。
    temp = a+1;   
    a+1 = a+2;    // error:编译的时候提示,表达式必须是可修改的左值。
    a+2=temp;

// 第2种交换方式,是正确的。
    p = a+1;
    q = a+2;
    temp = p;         
    p = q;
    q = temp;

    for(i = 0;i<1;i++)
    {
    printf("%5d,%5d",*a+1,*a+2);
    }
printf("\n");
system("pause");
}
请问这两个方式的区别在那里?
搜索更多相关主题的帖子: 表达式 system include 
2016-04-10 12:27
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:7 
數組名是不可修改的左值

未佩好剑,转身便已是江湖
2016-04-10 13:13
HTrack
Rank: 2
等 级:论坛游民
帖 子:2
专家分:14
注 册:2016-4-4
得分:7 
数组名是常量,不是变量,不能对其赋值
2016-04-10 13:26
xxx9527
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-10
得分:0 
懂了,谢谢
2016-04-11 10:47
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:7 
回复 3楼 HTrack
数组名不是常量
是左值
意义上更接近变量
数组名是一个不可改变的变量

https://zh.
2016-04-11 11:38
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
楼主的第二种交换只是 语法上没什么问题
程序运行的时候 并没有交换数组元素的值

https://zh.
2016-04-11 11:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463477-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149650 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved