读书人

C语言const应用有关问题

发布时间: 2013-03-12 11:19:35 作者: rapoo

C语言const应用问题
#include<stdio.h>
const int sou[4]={1,2,3,4};
void move(const int a[],int b[]);
int main(void)
{
int rat[4];
int i,j,k,l;
i=sou[0];
j=sou[1];
k=sou[2];
l=sou[3];
move(sou,rat);
printf("i=%d\n j=%d\n k=%d\n l=%d\n rat[0]=%d\n rat[1]=%d\n rat[2]=%d\n rat[3]=%d\n",i,j,k,l,rat[0],rat[1],rat[2],rat[3]);
return 0;

}
void move(const int a[],int b[])
{
for(int c=0;c<4;c++)
a[c]=b[c];
}
VC++6下编译就会显示:D:\C 实例练习\kk\kk.cpp(20) : error C2166: l-value specifies const object
执行 cl.exe 时出错.
这个信息,
请问各位朋友,这个程序的问题是出在哪里?
[解决办法]


#include<stdio.h>
int sou[4]={1,2,3,4};
void move(int a[],const int b[]);
int main(void)
{
int rat[4];
int i,j,k,l;
i=sou[0];
j=sou[1];
k=sou[2];
l=sou[3];
move(sou,rat);
printf("i=%d\n j=%d\n k=%d\n l=%d\n rat[0]=%d\n rat[1]=%d\n rat[2]=%d\n rat[3]=%d\n",i,j,k,l,rat[0],rat[1],rat[2],rat[3]);
return 0;

}
void move(int a[],const int b[])
{
for(int c=0;c<4;c++)
a[c]=b[c];
}

[解决办法]
for(int c=0;c<4;c++)
VC6下是不支持这种变量定义的,你把c的定义拿到for外面试试

[解决办法]
const 修饰的数组不能被更新,不可重新赋值
[解决办法]
#5 的代码是能正确运行的。楼主你可以看下有关const关键字的说明。#1 的代码报错的原因:const变量声明时必须赋值,并且const变量只能作为=号的右值,在C中是“一次赋值不可更改”。

读书人网 >C语言

热点推荐