partA: 0000000000400555 T main 000000000040052d T _Z7averageif 00000000004004ed T _Z7averagePdRd
partB: the output is: 1 8 4 8 4 8 8 8 these are because that when you define the variables as value,them would be assign as the storage amount that the type of the variable needs. However,when you define it to be a pointer,it would assign the memory space that required to store the addresses.