字符串和存储区

来源:互联网 发布:freecodecamp python 编辑:程序博客网 时间:2024/05/23 13:58

特别提醒:

  • 注意字符串和字符数组的区别(当初总是混淆)
  • 注意char string[ ] =”shanghai” 和 char *p=”shanghai”的区别(存储区域不一样)
////  main.c//  字符串////  Created by fzl//  Copyright © fzl. All rights reserved.///* 1.栈区:保存局部变量:函数里面定义的变量 2.堆区:手动分配内存 3.静态区(全局区):静态变量,全局变量 4.代码二进制区: 5.文字常量区:常量字符串 */#include <stdio.h>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;}
1 0
原创粉丝点击