| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:求助数组作为参数传递的问题,本人新手,求大神指点
只看楼主 加入收藏
shinnier
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-3-18
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
求助数组作为参数传递的问题,本人新手,求大神指点
void DJY(int *a)
{
    int LE,i,j,k,NS=0,Dmin=0,N,LI=0,I=0,l;   /*初始化*/
    int KD[8]={0};
    for(i=0;i<NG;i++)                        /*遍历所有总体节点编码*/
    {   
        Dmin=NG-1;                           /*给最小节点编码赋初值*/
        for(LE=0;LE<LEE;LE++)                /*遍历所有元素*/
            for(j=0;j<ND;j++)                /*遍历每个元素的所有节点*/
                if(i==a[LE][j])
                    for(k=0;k<ND;k++)
                        if(a[LE][k]<Dmin)
                           Dmin=a[LE][k];   
        LI=NP*(i-Dmin);                      /*第NP行半带宽*/
        I=NP*i;
        for(N=1;N<=NP;N++)
            KD[I+N]=KD[I+N-1]+LI+N;          /*对角元地址数组*/
    }   
    printf("KD[7]=");
    for(l=1;l<=NG;l++)
    {
        printf("%3d",KD[l]);                 /*输出对角元地址数组*/
    }               
    NS=KD[NG*NP];
}


调用时用DJY(a);请问哪里不对呀?结果显示
錯誤    2    error C2109: 註標必須使用在陣列或指標型別上
錯誤    4    error C2664: 'DJY' : 無法將參數 1 從 'int [5][3]' 轉換成 'int *'
搜索更多相关主题的帖子: 元素 
2015-03-18 07:55
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
调用时用DJY(a);请问哪里不对呀?结果显示------>为什么不把源代码发出来   你不发出来代码  谁知道你哪里不对呢

DO IT YOURSELF !
2015-03-18 08:50
shinnier
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-3-18
收藏
得分:0 
回复 2楼 wp231957
全部是这样
#include <stdafx.h>
#include"stdio.h"
#include<stdlib.h>
#include <iostream>
#include <math.h>
using  namespace std;
#define NG 7
#define NP 1
#define ND 3
#define LEE 5

void DJY(int *a)
{
    int LE,i,j,k,NS=0,Dmin=0,N,LI=0,I=0,l;   /*初始化*/
    int KD[8]={0};
    for(i=0;i<NG;i++)                        /*遍历所有总体节点编码*/
    {   
        Dmin=NG-1;                           /*给最小节点编码赋初值*/
        for(LE=0;LE<LEE;LE++)                /*遍历所有元素*/
            for(j=0;j<ND;j++)                /*遍历每个元素的所有节点*/
                if(i==a[LE][j])
                    for(k=0;k<ND;k++)
                        if(a[LE][k]<Dmin)
                           Dmin=a[LE][k];   /*若节点局部编码与总体编码相对应,遍历元素所有节点,获取最小节点编码*/
        LI=NP*(i-Dmin);                      /*第NP行半带宽*/
        I=NP*i;
        for(N=1;N<=NP;N++)
            KD[I+N]=KD[I+N-1]+LI+N;          /*对角元地址数组*/
    }   
    printf("KD[7]=");
    for(l=1;l<=NG;l++)
    {
        printf("%3d",KD[l]);                 /*输出对角元地址数组*/
    }               
    NS=KD[NG*NP];
}

int main()
{
    int II[5][3]={{0,1,2},{1,4,2},{1,3,4},{3,6,4},{3,5,6}};
        DJY(II);
    return 0;
}
2015-03-18 10:55
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你很多代码都是错的,包括你的DJY函数内部的有些语句


简单的二维数组至指针的转换示例  供参考:

程序代码:
#include <stdio.h>

int main()
{
    int II[5][3]={{0,1,2},{1,4,2},{1,3,4},{3,6,4},{3,5,6}};
    int* p=&II[0][0];
    int i=0;
    while(i<15)
    {
        printf("%2d",*(p+i));
        i++;
    }
    return 0;
}

DO IT YOURSELF !
2015-03-18 11:03
shinnier
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-3-18
收藏
得分:0 
回复 4楼 wp231957
谢谢,可是这个函数是我的主函数的一小部分,我在主函数中需要用它的结果,也就是怎么调用数组。。。尝试很多次了,总是出错,能不能指点一下啊
2015-03-18 12:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
说说你想实现神马

DO IT YOURSELF !
2015-03-18 13:05
shinnier
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-3-18
收藏
得分:0 
回复 6楼 wp231957
DJY函数能计算出数组KD的元素值,而主函数就是想调用这个函数后直接输出KD[8]的结果,下一步的计算会用到。如果计算过程直接写在main函数中不是会造成主函数太长了么?不知道考虑的对不对
2015-03-18 14:28
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用shinnier在2015-3-18 14:28:01的发言:

DJY函数能计算出数组KD的元素值,而主函数就是想调用这个函数后直接输出KD[8]的结果


这句话看不懂

DO IT YOURSELF !
2015-03-18 14:31
快速回复:求助数组作为参数传递的问题,本人新手,求大神指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016765 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved