频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
字符串和存储区
2017-04-05 09:25:28           
收藏   我要投稿

字符串和存储区:注意字符串和字符数组的区别(当初总是混淆) 注意char string[ ] =”shanghai” 和 char *p=”shanghai”的区别(存储区域不一样)。

//
//  main.c
//  字符串
//
//  Created by fzl
//  Copyright ? fzl. All rights reserved.
//

/*
 1.栈区:保存局部变量:函数里面定义的变量
 2.堆区:手动分配内存
 3.静态区(全局区):静态变量,全局变量
 4.代码二进制区:
 5.文字常量区:常量字符串
 */
#include 

void test1()
{

    /*
     char str[4]
     所有的字符串都是字符数组,但是字符数组不一定是字符串
     */
    char str[4]={'a','b','c','d'};

    char str1[4]={'a','b','c','\0'};


    //定义字符串:以'\0'做结尾标志
    //1.
    char string[10]={'a','b','c','d'};


    //2.
    char string1[10]={"1234567"};

    //3.
    char string2[10]="123456";


    //4.
    char string3[]="1234";

    /*
     这是错的
     char string4[10];
     string4[10]='c';
     */

    //5.字符串不能这么初始化,这个只能叫做字符数组
    //char string4[]={'a','b','c','d'};
}


void test2()
{
    char string1[3]={'i','t','\0'};

    char string[2]={'o','k'};
    int i=0;
    for (i=0; i<2; i++)
    {
        printf("string[%d]=%p\n",i,&string[i]);
    }
    printf("\n");
    for (i=0; i<3; i++)
    {
        printf("string1[%d]=%p\n",i,&string1[i]);
    }

    printf("%s\n",string);


}

void test3()
{
    //指针初始化字符串
    char *p="I LOVE CHINA";

    char *q="I LOVE YOU";


    printf("p=%p\nq=%p\n",p,q);
    // p[0]='r';错的,文字常量区的内容只读
    printf("%s\n",p);
    char string[12]="1234";
}

void printString(char *string)
{

    //string[0]='u';
    printf("%s\n",string);
}

int main()
{
    char string[10]="shangHai";//存储于栈区
    char *p;    
    p="shangHai";//存储于静态常量区,切记return不能返回一个指向“栈区”的引用和指针
    printString(p);
    return 0;
}
点击复制链接 与好友分享!回本站首页
上一篇:udp协议之server.c/client.c源代码分析
下一篇:链表的按条件删除
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站