| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2895 人关注过本帖
标题:学习了两个月的指针了,对于指针数组的问题还是有疑问求助!
取消只看楼主 加入收藏
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:15 
学习了两个月的指针了,对于指针数组的问题还是有疑问求助!
下面的程序是输入数字月份后自动转换成英文月份(前6个月的)。其中“ps=*(name+i-1)”这一句,我可以理解成 neme 是一个指向二维数组的指针,它储存了二维数组中各字符串的首地址,给 name 取值(*)就是把它所储存的首地址赋予指针ps?
我上面说的那段话是对的吗?如果有错误还请详细纠正。
#include<stdio.h>
void main()
{
    char *name[]={"Jan","Feb","Mar","Apr","May","June"};
        char *ps;
    int i;
    printf("Enter the NO of Month:\n");
    scanf("%d",&i);
    if(i>=1&&i<=6)
    {
       ps=*(name+i-1);
        printf("No. %2d Month--> %s\n",i,ps);
    }
}
搜索更多相关主题的帖子: 英文月份 include 字符串 Enter 
2016-08-04 15:59
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
相信看过的都是好人,别只潜水嘛,搞不懂真的很困惑的!求指教!
2016-08-04 16:05
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 3楼 rjsp
您这个直接是数组输出月份的,我想知道用指针输出时 ps=*(neme+i-1)中的 name 到底是代表什么?指针还是数组?
2016-08-04 16:59
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 3楼 rjsp
我再用了一个指针ps来表示数组的首地址,但其中的一些对应关系我就搞混了
2016-08-04 17:03
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
以下是引用rjsp在2016-8-4 16:10:34的发言:

不写奇怪的代码

#include <stdio.h>

int main( void )
{
    const char* names[] = { "Jan", "Feb", "Mar", "Apr", "May", "June" };

    int month;
    printf( "Enter the NO of Month: " );
    scanf( "%d", &month );

    if( month>=1 && month<=6 )
        printf( "No.%2d Month --> %s\n", month, names[month-1] );

    return 0;
}

就这段程序来说,如果将printf输出中的“names[month-1]”换成*(names+month-1)也能编译成功且结果正确。这里我就凌乱了,如果说names是一个指针的话,那么names[month-1]和*(names+month-1)难道都代表各个字符串数组{ "Jan", "Feb", "Mar", "Apr", "May", "June" }的第month个字符串的首地址???(说真话,感觉越学越不会了...)
2016-08-04 19:42
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
谁能给我详细解释一下上面的问题,在线等...
2016-08-04 19:46
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
吃过饭的好人儿帮忙讲解一下我的问题嘛
2016-08-04 19:56
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 9楼 书生牛犊
name不是指向字符串的指针吧,name[i]才是指向各字符串的指针吧?不然输出时直接用printf("%s",name)就可以输出其中一个字符串了,而实际用printf("%s",name[i])才能输出...还有如果name[i]才是那个指针,那么name是什么呢到底?是指向各字符串指针的指针吗?因为用printf("%s",*(name+i))能输出其中一个字符串,我是这样想的目前,难道只针的指针还是一个指针?!求纠正指教!
2016-08-04 20:22
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 7楼 ehszt
好想您说的有道理哦,能再详细点吗?
2016-08-04 20:25
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 15楼 ehszt
哇,按照你的理解我似乎想通了。*(name+i-1)其实是一个指针,ps=*(name+i-1)这其实是一个指针的赋值?
收到的鲜花
  • ehszt2016-08-04 20:35 送鲜花  7朵   附言:我很赞同
2016-08-04 20:30
快速回复:学习了两个月的指针了,对于指针数组的问题还是有疑问求助!
数据加载中...
 
   



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

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