| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1103 人关注过本帖
标题:求 c语言中的字符串考备
只看楼主 加入收藏
tfgood
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-3
收藏
得分:0 
是这样吗??
在c编译系统中 对字符数组和字符串数组 都是按指针来处理的
也就是说  不管你用int a[],char a[],int *a[]系统都是为次建立一个指针
对他们的操作就是对此指针的操作
上面的*b="moon" 系统实现是 在用户区分配内存存入“moon”比如分配在
内存的 2000h,2002h,2003h,2004h 然后用*b指向2000h单元的内容 也就是说
给b=2000h 所以怎么能说b是随机地址呢?
这个过程和对数组的操作一模一样
为什么这个地址就是只读的呢?????????????
2008-12-05 13:35
yu8697593
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-21
收藏
得分:0 
楼主你定义了两个字符串常量,只能对起进行读抄作,不能对起进行写抄作,谭浩强的书上好像就有这么一处错误
2008-12-05 13:47
yu8697593
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-21
收藏
得分:0 
最好呢把他该成数组就OK了
2008-12-05 13:48
peng_piao
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-11-5
收藏
得分:0 
#include <iostream>
using namespace std;
#include<stdio.h>

static    void copy(char *,char *);
int main(int argc, char** argv)
{

    char *a = "sky";  
//    char *b = new char[5];   //需要重新分配空间,c++分配方式
    char *b = (char*)malloc(100); //需要的空间大小是 a,b指向的字符串的有效长度的最大值
    strcpy( b, "moon" );
    printf("%s\n%s\n", a, b );

    copy(a, b);

    printf("%s\n%s\n", a, b);
    
    free(b);    //    c语言释放空间
//    delete []b; // c++释放空间

    return 0;

}

static void copy(char *p1, char *p2)
{
    while(( *p2 = *p1 ) != '\0')
    {
        p1++;
        p2++;
    }

    *p2='\0';
}

[[it] 本帖最后由 peng_piao 于 2008-12-5 18:31 编辑 [/it]]
2008-12-05 18:29
tfgood
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2008-12-3
收藏
得分:0 
能解释一下嘛  谢谢
2008-12-05 20:08
快速回复:求 c语言中的字符串考备
数据加载中...
 
   



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

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