1. 程式人生 > >Love LL and Love Code

Love LL and Love Code

字串:
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; }