值能否根据参数在函数中的位置而变化?

问题描述 投票:0回答:0

为什么所有函数的结果都不一样,除了函数参数的顺序?

例如: 我的代码

#include <stdio.h>
#define MAX_SIZE 100
void sum2(float *list, int n);
void sum3(int n, float *list);
float input[MAX_SIZE];

int main(void){
    printf(" sum2(input, MAX_SIZE) \n");
    sum2(input, MAX_SIZE);
    printf(" sum3(MAX_SIZE, input) \n");
    sum3(MAX_SIZE, input);
}

void sum2(float *list, int n)
{
    printf("&list \t= %p\n\n", &list);
}

void sum3(int n, float *list){
    printf("&list \t= %p\n\n", &list);
}

输出

sum2(input, MAX_SIZE) 
&list   = 0x16fc5b268

 sum3(MAX_SIZE, input) 
&list   = 0x16fc5b260

期待

sum2(input, MAX_SIZE) 
&list   = 0x16fc5b268

 sum3(MAX_SIZE, input) 
&list   = 0x16fc5b268

和上面的代码一样,除了参数的顺序不同,其他结果都是同一个函数输出的

我试图找到类似的问题,但找不到。我觉得如果是同值函数,不管参数顺序如何,都应该输出同一个值。我的看法有错误吗? 供您参考,我的编译器是 Apple clang 版本 14.0.0 (clang-1400.0.29.202)。 谢谢你的任何答案。

arrays c function pointers parameters
© www.soinside.com 2019 - 2024. All rights reserved.