求助,c语言中如何使一个变量在某次赋值后保持不变

rt,在c语言环境下如何使一个变量在某次赋值后无法再修改其值,而且这个变量还是二维数组中的元素。
我在vs2010编程的时候,老是一些变量的值莫名其妙就变化了,根本没改动过也变了。用const定义一个常量保存之后就解决了,但数组的元素无法定义为const啊,而且是部分元素要保持不变,不是全部,怎么办啊?
高手请看这个:
for (i=stax;i<=endex;i++)
for (j=0;j<=n;j++)
{
printf_s("\n please input G[ %d ][ %d ]= ",i,j );
scanf_s("%f",&G[i][j]);
printf_s("\n please input B[ %d ][ %d ]= ",i,j );
scanf_s("%f",&B[i][j]);
};
简单的循环,如果stax与endex为变量,循环后结束值变得乱七八糟,但用const定义为常量则问题解决,为神马?

变量,如果你之后不重新赋值就不会改变的

如果你要保留某个值,你可以用临时变量保存,例如
int tmp=a[i];追问

高手请看这个:
for (i=stax;i<=endex;i++)
for (j=0;j<=n;j++)
{
printf_s("\n please input G[ %d ][ %d ]= ",i,j );
scanf_s("%f",&G[i][j]);
printf_s("\n please input B[ %d ][ %d ]= ",i,j );
scanf_s("%f",&B[i][j]);
};
简单的循环,单但果stax与endex为变量,循环后结束值变得乱七八糟,但用const定义为常量则问题解决,为神马?

追答

for循环是一个已知次数的循环,你这个stax和endex是在哪里赋值的?

你可以试试这么写

int stax=0;
int endex=10;
int n=10;
for (i=stax;i<=endex;i++)
for (j=0;j<=n;j++)
{
printf_s("\n please input G[ %d ][ %d ]= ",i,j );
scanf_s("%f",&G[i][j]);
printf_s("\n please input B[ %d ][ %d ]= ",i,j );
scanf_s("%f",&B[i][j]);
};

追问

就是这样写不行,stax和endex定义为常量才行。虽然循环次数相同,可是定义为变量的话stax和endex循环结束时会改变

追答

会改变????
你单步看看是哪一步发生改变了?

另外for循环常规用法其实是这样

for (i=0;i<=10;i++)
for (j=0;j<=10;j++)
{
printf_s("\n please input G[ %d ][ %d ]= ",i,j );
scanf_s("%f",&G[i][j]);
printf_s("\n please input B[ %d ][ %d ]= ",i,j );
scanf_s("%f",&B[i][j]);
};

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-07
如果这个不变量你不经常用可以设置为全局变量 放在程序的最上部追问

全局变量也不能把值固定下来吧

追答

const定义为常量 之后 stax与endex 就是常量了

第2个回答  2013-05-07
定义为全局变量,部分保持不变?,这个类型的话就不行了,你可以试试类定义,在类里分为两个不同部分追问

不是,是用scanf读入后想把数组的值固定下来。但并非所有元素,某些元素还要计算后修正,某些可以直接固定下来。譬如定义一个啊int a[10],想把啊a[0]-a[5]的值不变当作常量,a[6]-a[10]用来计算。而且事先不知道哪个元素会被输数据时定为不变啊。

求助,c语言中如何使一个变量在某次赋值后保持不变
变量,如果你之后不重新赋值就不会改变的 如果你要保留某个值,你可以用临时变量保存,例如 int tmp=a[i];

为什么c语言重新赋值后一直不变?
这是由于c语言中的方法参数传递分为传值引用(形参,在方法中修改的值只在方法中有效)和指针引用(实参,可以直接修改实际结构体或参数的值),而你问题中的代码属于形参传递,所以在main函数中打印的结果没有变化。希望对你有用!

c语言定义了一个全局变量,为什么该变量在函数调用后,值没发生改变?
如果通过函数传参方式调用,并且不是传的指针,那就不会改变原来的值,如果想改变全局变量的值,可以直接在函数中使用,不需要传参。也或者你传指针进去

C语言输出m--后如何保持m值不变
这个运算没有给m赋值,所以你要输出m就直接pritf(“%d”,m);但是m--给m赋值了,用++m加回来。printf(“%d”,++m);

c语言为变量赋值有几种方法
首先是直接赋值法,这种赋值方式是最直观和简单的。例如,我们可以将整数123赋值给一个整型变量x,即int x = 123; 或者将字符's'赋值给一个字符变量,即char c = 's'; 这种赋值方式适用于各种基本数据类型。其次是通过函数调用进行赋值,这种方式通常用于获取函数的返回值。例如,int x = fun();...

C语言经过逻辑运算,为什么变量的值没有改变呢
逻辑运算不改变变量的值,只返回该表达式的结果,如果是真,返回1,假返回0 而你的 (m=a>b)&&(n=c>d)首先把a赋值给m,然后比较m和b,5>6假,返回0,&&一边有0肯定结果是0,所以整个式子的结果是0,但是!你并没有吧整个结果储存起来,所以整个结果就丢失了。不过不论整个结果是多少,本身...

c语言中如何让while(1)下的一个程序在条件满足时(条件保持不变)只执...
car_out); \/\/判断按键完全释放? num++; \/\/条件成立,总数加1,也就是99+1}\/\/if(num>99) \/\/判断总数 num是否大于99{ num=99; \/\/如果总数num大于99,总数num赋值99,就是最大值就是显示99 } else if(num<0) \/\/判断总数 num是否小于0 { num=0; \/\/如果总数小于0,...

C语言中的变量可以赋值吗?
C语言中的变量可以赋值。C语言中定义变量的格式非常简单,如下所示:首先要强调的一点是:最后的分号千万不要丢了。变量的定义是一个语句,我们说过,语句都是以分号结尾的。变量名”就是你想给这个变量起个什么名字,通常都是用字母。比如:就表示定义了一个整型变量 i。变量名的命名规则稍后会详细地...

C语言重新赋值内存地址会变吗?
关键是要区分以下几点:a,表示a的值,即它装的东西,具体到这个例子,a装的是另一个int型变量的地址。如果a不是const类型的,则它装的东西可以改变。比如,这里先装的是b的地址(指针变量是用来装地址的),后改成了c的。&a,当然就表示a自己的地址了,你可以将a想象成一个箱子,它的地址就是...

c语言中关于赋值后的问题
b的值赋给了a,所以a是2,因为你没有将b赋新的值,所以b还是2没有变,a有了新值,所以以前的值丢弃了,你若想a之前的值留下,你可以另外在后面再写一个a=1

相似回答