C int**数组更改值

C int**数组更改值,c,pointer-to-pointer,C,Pointer To Pointer,所以我有一个int**。它包含像素值。我想做的是改变一组像素值的值;假设值为90,我想将其更改为最大级别,它必须创建x像素量的黑色边缘。在过去的一个小时里,我一直在摆弄它,似乎不知道如何改变它内部的实际值** 这就是我到目前为止所做的: int pgmDrawEdge( int **pixels, int numRows, int numCols, int edgeWidth, char **header ){ int i=0, j=0, count=0; int intens

所以我有一个
int**
。它包含像素值。我想做的是改变一组像素值的值;假设值为90,我想将其更改为最大级别,它必须创建x像素量的黑色边缘。在过去的一个小时里,我一直在摆弄它,似乎不知道如何改变它内部的实际值**

这就是我到目前为止所做的:

int pgmDrawEdge( int **pixels, int numRows, int numCols, int edgeWidth, char **header ){
    int i=0, j=0, count=0;

    int intensity=atoi(header[2]);

    while(count<edgeWidth){
        for(; i<numRows; i++){
            for(; j<numCols; j++){
                pixels[i][j]=intensity;
            }
        }
        count++;
    }

    return 0;
}
在主要功能中:

    int **pixel=NULL;
    pixel=pgmRead(header, &rows, &cols, in);

if(strcmp(argv[1],"-e")==0){
    printf("Edge Drawing\n");
    pgmDrawEdge(pixel, rows, cols, edgeWidth, header);
}

您的pgmDrawEdge的工作原理与此测试所示基本相同。所以问题在别处

#include <stdio.h>
#include <stdlib.h>
int pgmDrawEdge( int **pixels, int numRows, int numCols, int edgeWidth, char **header ){
    int i=0, j=0, count=0;

    int intensity=atoi(header[2]);

    while(count<edgeWidth){
        for(; i<numRows; i++){
            for(; j<numCols; j++){
                pixels[i][j]=intensity;
            }
        }
        count++;
    }

    return 0;
}

int main() {
 char *header[]={"abc","def","90"};
 int *x[2];
 int l1[]={1,2,3,4};
 int l2[]={5,6,7,8};
 x[0]=l1;
 x[1]=l2;
pgmDrawEdge(x,2,4,99,header);
printf("result is %d should be %s", x[0][0], header[2] );
    return(0) ;
}
#包括
#包括
int pgmDrawEdge(int**像素,int numRows,int numCols,int edgeWidth,字符**标题){
int i=0,j=0,count=0;
int强度=atoi(标题[2]);

虽然(countpost您的main,当您调用函数时,是否通过malloc动态分配像素?我有另一个函数,它向主函数返回int**。当我将它发送到另一个函数时,我仍然可以访问所有内容并打印出像素扫描的内容,我们看到分配并填充
int**
的函数?您不知道ing pgmDrawEdge将显示像素阵列的形状。
#include <stdio.h>
#include <stdlib.h>
int pgmDrawEdge( int **pixels, int numRows, int numCols, int edgeWidth, char **header ){
    int i=0, j=0, count=0;

    int intensity=atoi(header[2]);

    while(count<edgeWidth){
        for(; i<numRows; i++){
            for(; j<numCols; j++){
                pixels[i][j]=intensity;
            }
        }
        count++;
    }

    return 0;
}

int main() {
 char *header[]={"abc","def","90"};
 int *x[2];
 int l1[]={1,2,3,4};
 int l2[]={5,6,7,8};
 x[0]=l1;
 x[1]=l2;
pgmDrawEdge(x,2,4,99,header);
printf("result is %d should be %s", x[0][0], header[2] );
    return(0) ;
}