C 整数数组中元素的不同打印输出

C 整数数组中元素的不同打印输出,c,C,我试着在数组中对元素进行代码计数,效果很好。 问题是gcc使用main()中的for-语句和函数调用countreturn(size\t sz,int*arr)打印不同的输出 下面是输出和代码。。 输出: ---------- 11 132766 五, 0 -语句的打印1,而不是32766,但使用函数时打印32766 #include<stdio.h> int countreturn(size_t sz, int *arr){ int i=0, count = 0;

我试着在数组中对元素进行代码计数,效果很好。
问题是gcc使用
main()
中的
for
-语句和函数调用
countreturn(size\t sz,int*arr)
打印不同的输出

下面是输出和代码。。 输出:

---------- 11

132766

五,

0


-语句的
打印1,而不是32766,但使用函数时打印32766

#include<stdio.h>
int countreturn(size_t sz, int *arr){   
    int i=0, count = 0;
    while(arr[i]!='\0'&&i<sz){
        ++i;
        ++count;
        printf("%d ",arr[i]);
    }
    printf("\n");
    return count;
 }

int main(){
 int store[5] = {[0 ... 4] = 1 };
 printf("-----------------\n");
 for(int i = 0; i <5; ++i){
    printf("%d ", store[i]);
 }
 printf("\n");
 printf("-----------------\n");

 int store2[500] = {'\0',};

 printf("%d\n", countreturn(sizeof(store)/sizeof(int),store));
 printf("%d\n", countreturn(sizeof(store2)/sizeof(int),store2));
return 0;
}
#包括
int countreturn(size_t sz,int*arr){
int i=0,count=0;

而(arr[i]!='\0'&&i将增量移动到打印数组元素0-4,
而不是元素1-5,这意味着访问超出了数组大小,并获得未定义的行为和任何奇怪的值

while(arr[i]!='\0'&&i<sz){
    ++count;
    printf("%d ",arr[i]);
    ++i;
}

while(arr[i]!='\0'&&i问题是您首先递增i的值,然后打印存储在第i个索引中的值,这就是代码打印垃圾值的原因

#include<stdio.h>
int countreturn(size_t sz, int *arr){
int i=0, count = 0;
while(arr[i]!='\0'&&i<sz){
    printf("%d ",arr[i]);              //print first then
    ++i;                               // increment value if i
    ++count;
}
    printf("\n");
    return count;
}

int main(){
int store[5] = {[0 ... 4] = 1 };
printf("-----------------\n");
for(int i = 0; i <5; ++i){
printf("%d ", store[i]);
 }
 printf("\n");
 printf("-----------------\n");

 int store2[500] = {'\0',};

 printf("%d\n", countreturn(sizeof(store)/sizeof(int),store));
 printf("%d\n", countreturn(sizeof(store2)/sizeof(int),store2));
 return 0;
}
#包括
int countreturn(size_t sz,int*arr){
int i=0,count=0;

顺便说一下,(arr[i]!='\0'&&ib,gcc版本是4.2.1,我使用mac os xIf,如果数组维度是
5
,它包含
5
元素,那么
'/0'
结束标记在哪里?