了解有针对性的价值分配C

时间:2018-11-07 20:20:04

标签: c arrays function pointers

大家早安,晚上

我想清除以下指针概念,

在这个原型中,我传递第一个值,该值复制主函数中给定的第一个参数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)

1 个答案:

答案 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]之后打印数组的内容就会看到。