2 mingye1234 mingye1234 于 2016.03.18 11:32 提问

C语言小白提问```求大神

float search(float (*p)[4]){
float *pt = NULL;
for (int i = 0; i < 4; i++) {
if (
(*p + i) < 60) {
pt = *p;
}
}
return pt;
}

int main(int argc, const char * argv[]) {

float score[][4] = {{60,70,80,90},{56,86,97,68},{57,58,98,95}};
float *p,*q;
q = score;
for (int i = 0; i< 3; i++) {
    p = search(q + i);
     printf("不及格成绩为\n");
    if (p == *(q + i)) {   \\ 此处报错,不知为何.为什么  p == *(score + i)  对? 

        for (int j = 0; j < 4; j ++) {
            printf("%f\t", *(p + j));
        }
    }
}



return 0;

}

4个回答

bealing
bealing   Rxr 2016.03.18 13:35

p == *(q + i)类型不一样,要么p == q+i,要么*p == *(q+i)

mingye1234
mingye1234 并不正确啊改成*p == *(q + i)也是不对的
接近 2 年之前 回复
bealing
bealing   Rxr 2016.03.18 15:16

float (*q)[4];这样声明,才可以q=score
还有
if ( (*p)[i] < 60) {pt = *p;}这样才对
刚没仔细看,你把p\q类型一样,所以我说你p == *(q + i)不对,
这里面牵扯二级指针和数组指针,比较麻烦

mingye1234
mingye1234 再问一下 既然q\p类型一样,为什么*p == *(q + i)就不对了? p == q + i就对了?
接近 2 年之前 回复
mingye1234
mingye1234 自学的基础不够`谢指教
接近 2 年之前 回复
mingye1234
mingye1234   2016.03.18 19:00

再问一下 既然q\p类型一样,为什么*p == *(q + i)就不对了? p == q + i就对了?

bealing
bealing   Rxr 2016.03.18 19:33
 #include <stdio.h> 
#include <stdlib.h> 
float * search(float (*p)[4]){
    float *pt = NULL;
    for (int i = 0; i < 4; i++) {
        if ( (*p)[i] < 60) {
            pt = *p;
        }
    }
    return pt;
}
int main(int argc, const char * argv[]) {
float score[][4] = {{60,70,80,90},{56,86,97,68},{57,58,98,95}};
float *p;
float (*q)[4];
q = score;
for (int i = 0; i< 3; i++) {
    p = search(q + i);
    if (p == NULL) 
        continue;
     printf("不及格成绩为\n");
    if (p == *(q + i)) {   

        for (int j = 0; j < 4; j ++) {
            printf("%f\t", *(p + j));
        }
    }
}
return 0;
}
bealing
bealing 其实,很简单,弄清楚指针到底指的是什么就OK了,建议学习一下二位数组和二级指针,不然的话,光靠我解释,你也很难懂
接近 2 年之前 回复
mingye1234
mingye1234 回复Bealing: 兄弟 能解释的详细点吗?我基础差了点,刚学一个星期,实在有点弄不明白`
接近 2 年之前 回复
bealing
bealing 回复mingye1234: 你自己定义的p,q是什么类型?
接近 2 年之前 回复
mingye1234
mingye1234 兄弟! 我知道p == q + i可以 也知道p == *(score + i)也可以,.......只是不知道为什么*p == *(q + i)就不对了????
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!