c语言之指针调用注意

int maxof(int *ages){
    int length = sizeof(*ages);//算的是指针变量所占的空间大小
    return length;
}






#include
int main(){
    int ages[]={8,45,1,2,4,6};
    //int length = sizeof(ages);
    int length = maxof(ages);
    printf("length = %d",length);


    return 0;
}

结果会发现length 字节一直等于8。(指针变量在32位是4字节,在64位系统就是8个字节)

int maxof(int arry[],int lenth){
    int max = arry[0];
    for (int i = 1;i if (arry[i]>max) {
            max = arry[i];

        }
    }
    return max;

}
#include
 int main(){
    int a[]={78,99,12,34,56,45,};
    int lenth = sizeof(a)/sizeof(int);
    int max = maxof(a,lenth);
    printf("max = %d\n",max);
    return 0;
}

这个程序块中a并不是变量。所以在用的时候不会出现上面那种情况。数组的误差出现较小。“

#include
#include
int main(){
     char *a;
    char maxofarry(char *,int);

    printf("请输入数字");
    scanf("%s",a);
    int length =strlen(a);
    printf("length = %d",length);
    char max =maxofarry(a,length);
    printf("max = %c\n",max);
    return 0;
}
char maxofarry(char a[],int length){
    char max = a[0];
    for (int i =1; iif (a[i]>a[0]) {
            max= a[i];
        }


    }
    return max;
}

这个是数组调用没有出现问题,因此可见在用sizeof函数时要注意这一点。

你可能感兴趣的:(面试,c语言,指针,sizeof)