中易网

为什么要把指向指针的指针作为函数的参数

答案:2  悬赏:0  
解决时间 2021-02-12 06:03
为什么要把指向指针的指针作为函数的参数
最佳答案
因为指针是作为参数传递给函数的,传递的是指针指向的值。其本身并没有传递给函数。
全部回答
这说明你对指针理解还不够透彻。 int **t; 还没有分配内存能拿来t = b么? 这个先不说, b[3][2]是2维的数组,所以 int b[3][2]={{1,2},{1,2},{1,3}}; 不仅自己方便辨认也对你的代码清晰有好处 至于你函数的传值,我不需要看你的函数就知道不行 因为b[3][2]这样的数组,可以看成3行和2列,也可以看成 3个指向2维数组的指针 但是函数传值的时候编译器可以figure out数组前面的那一维,但是不能知道后面那一组的大小,所以你要明确指明后面的大小,所以prototype里要写 int m[][a],a是一个值 至于内存分配,比如 我写个 int *i, a; a = 10; *i = a; 这个对么?明显不对,因为i是指针,没有分配过内存 我不是中文学的,所以表述有点不清,但是malloc和指针是比较有难度的,慢慢来 还有楼上那位兄弟写的挺好,这里提醒一下需要注意int *t[n]和int (*t)[n]相差甚远,所以留心。 今天看了一下发现俺对你的意思理解有点偏差,不好意思, “指向指针的指针不是可以表示二维数组么?为什么传二维数组给**m 报错?” 指向指针的指针可以表示二维数组,前提是你要先分配内存. 比如 int **t; t = (int **)malloc(3*sizeof(int *)); 这样t就是一个含有3个指针的数组, 然后你再单独对每一个指针分配内存: int i; for(i = 0; i < 3; i++){ t[i] = (int *)malloc(2*sizeof(int)); } 这样t才可以看做二维数组, 而单单的int **t仅仅是指向一个指向整数的指针。 所以你可以写 int **t, *ptr, a; a = 10; ptr = &a; t = &ptr; 但是不能直接用作函数原型里作为2维数组传值的形参。 函数原型里要写作 void matrixchain(int *p,int n,int m[][6],int s[][6]); 这样传值才是对的,原因参见我前面讲的 这个就是解决方法
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女主死后重生在一个叫白沫沫的女孩身上
万帝珠宝地址有知道的么?有点事想过去
被你不珍惜,错过了我这么好的男人,真替你可
五笔是不是很难啊 ?
手动挡车根据什么加减档
宝花山这个地址在什么地方,我要处理点事
自家面粉和面粉厂面粉不一样吗
俗语夸奖人弹琴技艺高超
博诚电器我想知道这个在什么地方
华夏民族的先贤是谁
周公解梦梦到初恋种花
乌沙冲地址有知道的么?有点事想过去
大学辩论赛法院判决是否该受舆论影响
android源码怎么自定义api给上层用
欧尚超市张家港店地址在哪,我要去那里办事
推荐资讯
1980年阴历4月22是什么星座
看中了佳能77d 跟800d 请问哪个更有性价
心相随什么意思?
数字迷阵怎么样
山东省日照市市里有那几所大学?
贵阳哪里照艺术照比较好?
She eats cheese 还是she eat cheese?其中加S
迪吧里的MC没事就说,跟着我们场中央的什么什
哪里有赵忠祥解说的片段最好是 mp3的 可以免
佛的胆有多大
食物是什么意思
老地方茶吧在什么地方啊,我要过去处理事情
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?