关于数组和指针
#include<stdio.h>float add(int (*p))
{
int i, j;
float Sum;
for (i = 0;i < 3;i++) {
for (j =0 ;j < 3;j++) {
if (i = j||i+j==2) {
Sum += *(p + i));//编译没问题,运行时这里报错_(:з」∠)_
}
}
}
return Sum;
}
int main()
{
int p;
int i, j;
float Sum;
printf("输入3X3的数组:\n");
for (i = 0;i < 3;i++) {
for (j = 0;j < 3;j++) {
scanf("%d", &p);
}
}
Sum = add(p);
printf("Sum=%.2f", Sum);
}
3X3的矩阵,求矩阵的主对角线和副对角线之和,编译器:VS
帮帮忙看看是什么问题啊大佬(指针好鸡儿难_(:з」∠)_) 本帖最后由 java2python 于 2020-5-26 19:31 编辑
第八行:if (i = j||i+j==2) {
变成了赋值语句,死循环,难道不应该是i==j? 好像二维数组,应该用:*(p【i】+j)形式(中括号不能正常输出,只能用全角代替),p【i】是每一行的起始位置,这个指针+1,就是下一列的位置
*(p+1),实际就是下一行的位置,*(p+1)【1】,就是下一行的下一行,因为这两个操作全是一加就是一行,p+1只是把起始指针移到了第二行的开始
#include<stdio.h>
#include<windows.h>
float add(int (*p))
{
int i, j;
float Sum=0;
for (i = 0;i < 3;i++) {
for (j =0 ;j < 3;j++) {
if (i == j||i+j==2) {
Sum += *(p+j);//编译没问题,运行时这里报错_(:з」∠)_
}
}
}
return Sum;
}
int main()
{
int p;
int i, j;
float Sum;
printf("输入3X3的数组:\n");
for (i = 0;i < 3;i++) {
for (j = 0;j < 3;j++) {
//printf("p[%d][%d]=",i,j);
//scanf("%d", &p);
p = i*3+j;
}
}
printf("%p,%p,%p\n",&p,&p,&p);
printf("%p,%p,%p\n",&p,&p,&p);
printf("%p,%p,%p\n",&p,&p,&p);
printf("%p\n",&p);
Sum = add(p);
printf("Sum=%.2f", Sum);
system("pause");
} Sum += *(p + i)); 如果不是复制粘贴的错误,这里多了个 ) 吧 chxchxkkk 发表于 2020-5-26 18:32
Sum += *(p + i)); 如果不是复制粘贴的错误,这里多了个 ) 吧
哦哦,这个是复制粘贴出错了,多谢 java2python 发表于 2020-5-26 17:30
第八行:if (i = j||i+j==2) {
变成了赋值语句,死循环,难道不应该是i==j? 好像二维数组,应该用:*(p【 ...
多谢啊{:10_257:}
页:
[1]