我怀疑为什么3个变量wstart = wend = start;用来初始化循环。如果这些变量中任何一个的值发生变化,都会改变两个变量的值?
void reverseletter(char str[], int start, int end) {
int wstart, wend;
for (wstart = wend = start; wend < end; wend++) {
if (str[wend] == ' ')
continue;
// Checking the number of words
// present in string to reverse
while (str[wend] != ' ' && wend <= end)
wend++;
wend--;
//Reverse the letter
//of the words
reverse(str, wstart, wend);
}
}
答案 0 :(得分:3)
def gmsh_stl_mesher(id_name):
gmsh.initialize(sys.argv)
gmsh.option.setNumber("General.Terminal", 1)
gmsh.model.add('Nastran_stl')
gmsh.merge(id_name)
dimtag = gmsh.model.getEntities()[0]
dim=dimtag[0]
tag=dimtag[1]
surf_loop=gmsh.model.geo.addSurfaceLoop([tag])
gmsh.model.geo.addVolume([surf_loop])
gmsh.model.geo.synchronize()
# We can then generate a 3D mesh...
gmsh.model.mesh.generate(3)
id_name2=id_name.replace(".stl","_tet.bdf")
gmsh.write(id_name2)
与
wstart = wend = start
如果这些变量中的任何一个值发生变化,是否都会更改两个变量的值?
不,更改一个变量不会影响其他变量,所有三个变量都是独立变量。
答案 1 :(得分:1)
像b = c
这样的赋值本身就是一个表达式,其值就是赋值后b
的值。
因此
a = b = c;
可以被视为
a = (b = c);
等效于:
b = c;
a = b;
所有三个变量a,b和c彼此完全独立。
您可以通过以下代码段进行演示:
int a = 1;
int b = 2;
printf("%d\n", a);
printf("%d\n", a = b);
printf("%d\n", a);
输出
1
2
2
答案 2 :(得分:0)
如果更改其中一个变量,则不会更改其他变量。它们全部不引用相同的内存位置。
int wstart, wend;
for (wstart = wend = start; wend < end; wend++) {
wstart
,wend
和start
,每个都有其值的副本,更改一个不会更改其他值。
答案 3 :(得分:0)
此代码段
wstart = wend = start
利用以下事实:在C中,赋值是一个返回值的表达式。发生的事情是wend = start
将start
的值分配给wend
并“返回”它。此“返回”值已分配给wstart
。因此,总体效果是将start
和wend
都分配给wstart
。
这是我以前见过的样式,但我个人不喜欢它。我希望:
for (wstart = start, wend = start; wend < end; wend++)
它做同样的事情,但以更清晰的方式,IMO。