字符串基本操作

字符串:
1、C語言的字符串是以0結尾的字符串
2、C語言中沒有字符串類型,而是通過字符數組,來模擬字符串
3、字符串的內存分配可以在 堆上、棧上、全局區(很重要)

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

//字符數組  初始化
void main61()
{
    // 1 指定長度
    char buf2[100] = {'a','b','c','d'};
    // 1-1 char buf2[100] = {'a','b','c','d'};//如果初始化的個數大於分配內存的個數,編譯報錯
    // 1-2  後面的buf2[4]--buf2[99]都是0
    // 2 不指定長度,C編譯器會自動求元素的個數
    char buf1[] = {'a','b','c','d'}; //buf1是一個數組  不是一個以0結尾的字符串
    char buf11[] = {'a','b','c','d','\0'};  //若要使buf1變成字符串,在末尾人工加上 '\0' 即可
    printf("buf2:%s\n",buf2);
    printf("buf2[88]:%d\n",buf2[88]);
    printf("buf11:%s\n",buf11);
    printf("buf11[4]:%d\n",buf11[4]); 
    //三種0的區別
    printf("%d,%d,%d\n",'\0','0',0); //0,48,0
    system("pause");
    return;
}

//用字符串  來  初始化字符數組
//strlen()  長度不包括0,僅指字符串的大小  
//sizeof()  內存塊的大小
void main62()
{
    int size = 0;
    char buf3[]="abcd";  //buf3作爲字符數組  應該是5個字節,因爲字符串末尾還有'\0',也會存入buf3中
                         //作爲字符串,應該是4個字節
    int len = strlen(buf3);
    printf("buf3字符串的長度:%d\n",len);  //4

    //buf3作爲數組,數組是一種數據類型,本質(固定大小的內存塊的別名)
    size= sizeof(buf3);  //sizeof--求字節數
    printf("buf3數組所佔用的內存空間的大小:%d\n",size);

    {
        char buf4[128] = "abcd";
        printf("buf4[4]:%d\n",buf4[4]);
    }

    system("pause");
    return;
}

//通過數組下標和指針
void main()
{
    int i = 0;
    char *p = NULL;
    char buf5[128] = "abcdefg";

    for( i=0 ; i<strlen(buf5) ; i++ )
    {
        printf("%c  ",buf5[i]);
    }
    printf("\n");
    p = buf5;  //“buf5代表數組的地址”這句話是錯誤的
               // buf5代表的應該是數組首元素的地址 
    for( i=0; i<strlen(buf5); i++ )
    {
        printf("%c  ",*(p+i));
    }
    printf("\n");
    system("pause");
    return;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章