首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char *p解决思路

2012-08-19 
char ***pvoid ss(char ***p){}想把char p[100][100]这个数组传给此函数 怎么传呢用p 传不进[解决办法]&p

char ***p
void ss(char ***p)
{
}

想把char p[100][100];

这个数组传给此函数 怎么传呢

用p 传不进

[解决办法]
&p
..
[解决办法]

C/C++ code
语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:方法一, 形参给出第二维的长度。例如:#include <stdio.h>void func(int n, char   str[ ][5] ){int i;for(i = 0; i < n; i++)   printf("\nstr[%d] = %s\n", i, str[i]);}void main(){char* p[3];char str[][5] = {"abc","def","ghi"};func(3, str);}方法二,形参声明为指向数组的指针。例如:#include <stdio.h>void func(int n, char  (*str)[5] ){int i;for(i = 0; i < n; i++)   printf("\nstr[%d] = %s\n", i, str[i]);}void main(){char* p[3];char str[][5] = {"abc","def","ghi"};func(3, str);}方法三,形参声明为指针的指针。例如:#include <stdio.h>void func(int n, char **str){int i;for(i = 0; i < n; i++)   printf("\nstr[%d] = %s\n", i, str[i]);}void main(){char* p[3];char str[][5] = {"abc","def","ghi"};p[0] = &str[0][0];p[1] = str[1];p[2] = str[2];     func(3, p);}
[解决办法]
C/C++ code
//在堆中开辟一个3×4×5的3维int数组#include <stdio.h>#include <malloc.h>int ***p;int i,j,k;void main() {    p=(int ***)malloc(3*sizeof(int **));    if (NULL==p) return;    for (i=0;i<3;i++) {        p[i]=(int **)malloc(4*sizeof(int *));        if (NULL==p[i]) return;        for (j=0;j<4;j++) {            p[i][j]=(int *)malloc(5*sizeof(int));            if (NULL==p[i][j]) return;        }    }    for (i=0;i<3;i++) {        for (j=0;j<4;j++) {            for (k=0;k<5;k++) {                p[i][j][k]=i*20+j*5+k;            }        }    }    for (i=0;i<3;i++) {        for (j=0;j<4;j++) {            for (k=0;k<5;k++) {                printf(" %2d",p[i][j][k]);            }            printf("\n");        }        printf("---------------\n");    }    for (i=0;i<3;i++) {        for (j=0;j<4;j++) {            free(p[i][j]);        }        free(p[i]);    }    free(p);}//  0  1  2  3  4//  5  6  7  8  9// 10 11 12 13 14// 15 16 17 18 19//---------------// 20 21 22 23 24// 25 26 27 28 29// 30 31 32 33 34// 35 36 37 38 39//---------------// 40 41 42 43 44// 45 46 47 48 49// 50 51 52 53 54// 55 56 57 58 59//---------------
[解决办法]
玩得不亦乐乎啊
[解决办法]
二级已经不好理解,lz 要玩三级,顶!
[解决办法]
探讨

二级已经不好理解,lz 要玩三级,顶!

[解决办法]
探讨

二级已经不好理解,lz 要玩三级,顶!

[解决办法]
char ***p,首先不说其他吧,你先看下成熟点的产品以及开源的中有这么干的么?这样搞大家不好理解不说,自己也蛋疼。
[解决办法]
LZ的p指针是一个三级指针,而p数组是一个二维数组。
[解决办法]
char ***p;
char p[100][100];
这两个类型不匹配的。就算匹配了,也无法处理数组的维数。
如果要传数组,就声明为传数组: void ss(char p[100][100]);好了。


[解决办法]
char p[100][100]是二维数组,但p并非二级指针,它其实还是一级指针而已。所以***p就有问题了。。。

热点排行