| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 280 人关注过本帖, 1 人收藏
标题:指向指针数组的指针
只看楼主 加入收藏
xiang__jie
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-8-31
结帖率:71.43%
收藏(1)
已结贴  问题点数:14 回复次数:2 
指向指针数组的指针
#include <stdio.h>


int main(int argc, char *argv[])
{
    char *a[] = {"i love you","i hate myself","please forgive me","yestoday onece more","the day berfore yestoday"};
    int i = 0;
    char*p;
    p = a[0];
    while(i<5)
    {
       p =*(a+i++);
       printf("%s\n",p);      
    }
/*    char**p;
    p = a;
    while(i<5)
    {
       printf("%s\n",*(p+i));
       i++;
    }*/

    return 0;
}
书中提到定义指向指针数组的指针的方法,不过我看了一下觉得不通过char **p,而是通过char *P似乎也可以,请问怎么回事,如何理解这两种指针定义的区别;
顺便问一下,之前,定义指向数的的指针也有和此类似的问题想问,比如一个整型的二维组m[3][4],如果定义一个指针好像也可以有两种方式,一种为int *p,还有一种为int (*p)[4],请结合问题回答,本人把赏分全给回答我最好的,谢谢!
搜索更多相关主题的帖子: include please return 
2011-09-13 23:22
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
这两个问题其实是一个问题,因为{"i love you","i hate myself","please forgive me","yestoday onece more","the day berfore yestoday"};这个字符串更好的存储方式是不等长二维数组,这样不会浪费任何空间,幸运的是,编译器可以帮你完成。
char *a[] = {"i love you","i hate myself","please forgive me","yestoday onece more","the day berfore yestoday"};这样声明后,会产生指针数组来帮你完成。
对于二维数组m[3][4]而言,m[0],m[1],m[2]是指向4个基本类型数据的指针,他们也组成了指针数组。而类型需要相匹配的(*p)[4],否则编译器会报错;int *p只是指向单个数据的指针。你的疑问其实就是指向数组的指针和指针数组。

[ 本帖最后由 pauljames 于 2011-9-14 05:53 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-09-14 05:51
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:5 
回复 楼主 xiang__jie
代码乱写

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-14 07:18
快速回复:指向指针数组的指针
数据加载中...
 
   



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

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