| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 822 人关注过本帖
标题:关于指针的一个问题,查看了好久 ,还有点不懂,求帮
取消只看楼主 加入收藏
任重道远
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2015-9-12
结帖率:66.67%
收藏
 问题点数:0 回复次数:4 
关于指针的一个问题,查看了好久 ,还有点不懂,求帮
截图.zip (17.39 KB)
#include <stdio.h>
#include <string.h>

int main(void)
{                                                               //第一个问题:
    char dest[]="........";                                    // char *dest=".......";
    char source[]="adfjkajkfdkojasofjojaosdjifio";            //  char *source="adfjkajkfdkojasofjojaosdjifio";
    size_t n;                                                 //  书上说这两种方式是等价的,但为什么换成这种方式程序运行就会发生内存错误?
                                                              // 是不是以char *dest=".......",这种方式声明初始化 它的内存就确定不变了,
    while(1)                                                  //而以     char dest[]="......",这种方式声明初始化 它的内存会根据存储的东西而变化。
    {
        printf("\nEnter a number,enter -1 to quit...");
        scanf("%d",&n);

        if(n<0)
          break;
        else
        {
            strncpy(dest,source,n);
            printf("%s\n",dest);
        }
    }
    getchar();
    return 0;
}

第二个问题:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char *dest="........";
    char source[]="adfjkajkfdkojasofjojaosdjifio";
    size_t n;

    while(1)
    {
        printf("\nEnter a number,enter -1 to quit...");
        scanf("%d",&n);
        dest=(char *)malloc(sizeof(dest)+1);                //此时已经动态分配了存储,但为什么输出依然有问题?
                                                            //结果是 上传的附件中的截图,求帮助。
        if(n<0)
          break;
        else
        {
            strncpy(dest,source,n);
            printf("%s\n",dest);
        }
    }
    getchar();
    return 0;
}


[ 本帖最后由 任重道远 于 2015-9-17 20:56 编辑 ]
搜索更多相关主题的帖子: source include 
2015-09-17 20:46
任重道远
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2015-9-12
收藏
得分:0 
回复 2楼 TonyDeng
,那这两个问题的答案。。。求解,谢谢
2015-09-17 21:16
任重道远
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2015-9-12
收藏
得分:0 
回复 5楼 TonyDeng
问题我差不多明白了,现在就是想知道char *dest="....."和char dest[]="....."这两种初始化方式的区别,我知道一个是声明了一个指向字符串的指针,一个是数组;
是不是前者分配的存储空间就固定了,以后存储更大的数据时需重新分配空间;而后者的空间是可变的,看存储的内容而定,谢谢
2015-09-17 21:31
任重道远
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2015-9-12
收藏
得分:0 
回复 7楼 TonyDeng
明白了,买的那本书错误挺多的,谢谢帮忙
2015-09-17 21:36
任重道远
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2015-9-12
收藏
得分:0 
回复 11楼 lwei
谢谢指点
2015-09-18 23:05
快速回复:关于指针的一个问题,查看了好久 ,还有点不懂,求帮
数据加载中...
 
   



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

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