注册 登录
编程论坛 C语言论坛

(int *x)数组指针传参传的不是地址吗??为什么循环条件不能用(;x<(x+y);x++)??

nxiner 发布于 2019-12-19 15:33, 2108 次点击
源码:

#include <stdio.h>
#include <string.h>
int con(int *x,int y)     //功能函数,传入指针
{
    int a=0;
    for(;x<(x+y);x++)          //指针从头开始移动到末尾
    {
        a++;
    }
    return a;
}
int main()        //主函数
{
    int a[50];
    int *p=a;
    int count;
    int b;
    printf("输入数组内数字个数:");
    scanf("%d",&count);
    for(int i=0;i<count;i++)
    {
        scanf("%d",&a[i]);
    }
    b=con(p,count);
    printf("%d",b);
    return 0;
}
7 回复
#2
nxiner2019-12-19 15:34
为什么循环条件不能用(;x<(x+y);x++)啊

我觉得传进来的x就是数组一开始的地址呀,

觉得x+y就是数组最后

x++实现位移QAQ
#3
rjsp2019-12-19 16:12
x<(x+y)
当 y <= 0 时,x<x+y 是恒 false
当 y > 0 时,x<x+y 是恒 true

另外,你这段代码想实现什么功能?为什么不直接
int con(int *x,int y)
{
    return y;
}
#4
wang_gs2019-12-19 16:29
x<(x+y)右端括号内的x的值不应该变。

int con(int *x,int y)     //功能函数,传入指针
{
    int *p=x;
    int a=0;
    for(; p<(x+y); p++)        //指针从头开始移动到末尾
    {
        a++;
    }
    return a;
}

以上函数的返回值等于y。
#5
forever742019-12-19 21:35
楼主的代码表达让我想起了驴脑袋前方不远处悬浮的那根萝卜。
#6
nxiner2019-12-19 22:10
回复 3楼 rjsp
谢谢谢谢!明白啦
#7
nxiner2019-12-19 22:11
回复 4楼 wang_gs
谢谢谢谢!!你这个方法真标准!!
#8
nxiner2019-12-19 22:12
回复 5楼 forever74
哈???????为啥?????????
1