| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 461 人关注过本帖
标题:指针 字符串 问题
只看楼主 加入收藏
FangMengHao
Rank: 1
等 级:新手上路
帖 子:43
专家分:5
注 册:2013-6-19
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:5 
指针 字符串 问题
# include <stdio.h>

int main (void)
{
    char name[81];
    char * ptr;
    ptr = name;

    gets(name);

    printf ("%s\n", name);
    printf ("%s\n", ptr);
    printf ("%p\n", &ptr);
    printf ("%p\n", *ptr);

    return 0;
}

输入
    ddd

输出
         ddd
         ddd
    0012FF28
    00000064

为什么输出ptr是ddd?
为什么不应该是*ptr的值为ddd?
那*ptr又是什么东西?

char *ptr中ptr不是指向name么?
搜索更多相关主题的帖子: include return 字符串 
2014-07-28 13:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:8 
# include <stdio.h>
int main (void)
{
    char name[81];
    char * ptr;
    ptr = name;
    gets(name);
    printf ("%s\n", name);
    printf ("%s\n", ptr);
    printf ("%p\n", &ptr);
    printf ("%p\n", *ptr);
    return 0;
}
输入
    ddd
输出
         ddd
         ddd
    0012FF28
    00000064
为什么输出ptr是ddd?   //因为ptr等同于name  第3个printf语句已经显示了 0012FF28就是name【0】的地址
为什么不应该是*ptr的值为ddd? //*ptr的值应该是d 而不是ddd
那*ptr又是什么东西?        
char *ptr中ptr不是指向name么?   
printf ("%p\n", *ptr);  这里应该用 printf ("%c\n", *ptr); 才能正确输出

DO IT YOURSELF !
2014-07-28 14:10
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:2 
printf的相关帮助
程序代码:
// crt_printf.c
// This program uses the printf and wprintf functions
// to produce formatted output.

#include <stdio.h>

int main( void )
{
   char     ch = 'h', 
            *string = "computer";
   wchar_t  wch = L'w', 
            *wstring = L"Unicode";
   int      count = -9234;
   double   fp = 251.7366;

   // Display integers
   printf( "Integer formats:\n"
           "   Decimal: %d  Justified: %.6d  "
           "Unsigned: %u\n",
           count, count, count, count );

   // Display decimals
   printf( "Decimal %d as:\n   Hex: %Xh  "
           "C hex: 0x%x  Octal: %o\n",
            count, count, count, count );

   // Display in different radixes
   printf( "Digits 10 equal:\n   Hex: %i  "
           "Octal: %i  Decimal: %i\n",
            0x10, 010, 10 );

   // Display characters
   printf("Characters in field (1):\n"
          "%10c%5hc%5C%5lc\n",
          ch, ch, wch, wch);
   wprintf(L"Characters in field (2):\n"
           L"%10C%5hc%5c%5lc\n",
           ch, ch, wch, wch);

   // Display strings
   printf("Strings in field (1):\n%25s\n"
          "%25.4hs\n   %S%25.3ls\n",
          string, string, wstring, wstring);
   wprintf(L"Strings in field (2):\n%25S\n"
           L"%25.4hs\n   %s%25.3ls\n",
           string, string, wstring, wstring);

   // Display real numbers
   printf("Real numbers:\n   %f %.2f %e %E\n",
          fp, fp, fp, fp );

   // Display pointer
   printf( "\nAddress as:   %p\n", &count);
}


输出:
程序代码:
Integer formats:
   Decimal: -9234  Justified: -009234  Unsigned: 4294958062
Decimal -9234 as:
   Hex: FFFFDBEEh  C hex: 0xffffdbee  Octal: 37777755756
Digits 10 equal:
   Hex: 16  Octal: 8  Decimal: 10
Characters in field (1):
         h    h    w    w
Characters in field (2):
         h    h    w    w
Strings in field (1):
                 computer
                     comp
   Unicode                      Uni
Strings in field (2):
                 computer
                     comp
   Unicode                      Uni
Real numbers:
   251.736600 251.74 2.517366e+002 2.517366E+002

Address as:   0012FF3C


[ 本帖最后由 funyh250 于 2014-7-28 14:21 编辑 ]

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-07-28 14:20
FangMengHao
Rank: 1
等 级:新手上路
帖 子:43
专家分:5
注 册:2013-6-19
收藏
得分:0 
回复 2 楼 wp231957
*ptr是懂了,至于为什么ptr等于name,更深入点的是为什么?还是不要问为什么。

还有那个0012FF28是ptr的地址,不是name[0]的地址,我刚才试了,neme[0]的地址和name的地址都是0012FF2C
2014-07-28 14:25
FangMengHao
Rank: 1
等 级:新手上路
帖 子:43
专家分:5
注 册:2013-6-19
收藏
得分:0 
回复 3 楼 funyh250
虽然看不懂,不过谢谢,我会仔细看看的。
2014-07-28 14:26
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
*ptr是懂了,至于为什么ptr等于name,更深入点的是为什么?还是不要问为什么。  这是你自己写的语句 为什么 就因为它 ptr = name;

DO IT YOURSELF !
2014-07-28 14:33
快速回复:指针 字符串 问题
数据加载中...
 
   



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

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