大家早安,晚上
我想清除以下指针概念,
在这个原型中,我传递第一个值,该值复制主函数中给定的第一个参数x,第二个值通过引用传递给它,以便直接访问其内存单元以永久更改它。
(在函数中)我没有得到的是函数如何管理值,
我会尝试更具体一些,我不知道这些任务是“周期性的”。
例如,对于我来说,此函数似乎是一种交换函数,因为将x即和整数相乘,然后将x指向y所指向的值,即y + 1依次指向该值,依此类推。 >
因此,我想知道此分配顺序的开始和结束时间,以了解为什么我总是在main或函数中打印它printf如果我没记错{11,33,22,44 }
for word in words:
# Move your vowel counting to the top of the for-loop so you aren't re-counting every if statement
num_vowels = 0
vowels = 'aeiou'
for character in word:
if character in vowels:
num_vowels += 1
# Determine your vowel qualifier only once in once place
if num_vowels == 0:
vowel_qualifier = 'no_vowels'
elif 1 <= num_vowels <= 2:
vowel_qualifier = 'few_vowels'
else:
vowel_qualifier = 'many_vowels'
# Determine your length qualifier only once too
if len(word) <= 3:
length_qualifier = 'short'
elif 4 <= len(word) <= 7:
length_qualifier = 'medium'
else:
length_qualifier = 'long'
# Finally, get stats based on the qualifiers above
get_stats(length_qualifier, vowel_qualifier)
答案 0 :(得分:3)
首先要注意的是,函数的参数x
立即被*y
的值覆盖。因此,为此参数指定的任何值都与结果无关。
该函数正在使用*y
临时交换*(y + 1)
和x
。因为参数y
对应于&a[1]
中的main
,所以这是第一个被交换的位置。如果然后在表达式&a[1]
中用y
换成*(y + 1)
,则会得到*(&a[1]+ 1)
== *((a + 1) + 1)
= *(a + 2)
= {{1} }。因此a[2]
和a[1]
被交换了,调用a[2]
之后打印数组的内容就会看到。