1447391641 发表于 2020-12-9 15:32:18

指针

#include <stdio.h>
sub(int *s,int n)
{
        int i,j=0;
for(i=0;i<n;i++)
                if(*(s+i)%2!=0)        s=s;      请问这一步是怎么进行运算的呢
        n=j;
}
int main()
{
        int a={11,12,13,14,15,16,17,18,19,20},n=10,i;
        sub(a,n);
        for(i=0;i<n;i++)
                printf("%d,",a);
        return 0;
}

城头有平安 发表于 2020-12-9 18:28:29

你这里传入的s指针应该是数组的首地址吧
那么*(s+i)%2 的意思就是 s % 2
数组对应的指针操作就是 例如 a 等价于 *(a+2);{:10_257:}

1447391641 发表于 2020-12-9 19:23:08

城头有平安 发表于 2020-12-9 18:28
你这里传入的s指针应该是数组的首地址吧
那么*(s+i)%2 的意思就是 s % 2
数组对应的指针操作就是 例如 a[ ...

就是a【10】的首地址11%2=1?,不应该呀,

城头有平安 发表于 2020-12-9 21:32:37

1447391641 发表于 2020-12-9 19:23
就是a【10】的首地址11%2=1?,不应该呀,

不是a是的首地址 是 a

a等价于 *(a+10)这里的a + 10 是第10 个数据的地址 再加个星号就是求他存储的值{:10_257:}

城头有平安 发表于 2020-12-9 21:34:52

1447391641 发表于 2020-12-9 19:23
就是a【10】的首地址11%2=1?,不应该呀,

咦,你是昨天和我说switch break问题的那个{:10_250:}{:10_250:}
页: [1]
查看完整版本: 指针