字符串和存储区

    xiaoxiao2021-03-25  65

    特别提醒:

    注意字符串和字符数组的区别(当初总是混淆)注意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; }
    转载请注明原文地址: https://ju.6miu.com/read-32368.html

    最新回复(0)