指針與字符串
NULL和NUL區別:前者用來表示特殊的指針((void*)0),而NUL是一個char(\0),不可混用。
字符常量:單引號;字符串:雙引號;
字符串的聲明方式:字面量、字符數組、指針。
字符串字面量池:
字符串初始化
初始化char數組: char header[]="Media Player";
strcpy函數初始化數組
char header[13];
strcpy(header, "Meadia Player");
2.初始化char指針
char *header;初始化這個字符串的常見方法是使用malloc和strcpy函數分配內存並將字面量復制到字符串中。
char *header=(char*) malloc(strlen("Media Player")+1);
strcpy(header, "Meadia Player");
區別sizeof與strlen:
標准輸入初始化字符串
標准字符串操作
#include<stdio.h> #include<stdlib.h> #include"string.h" int main() { char* error="ERROR:"; char* errorMessage="NOT Enough memory"; char* buffer=(char*)malloc(strlen(error)+strlen(errorMessage)+1); strcpy(buffer,error); strcat(buffer, errorMessage); printf("%s",error); printf("%s\n",errorMessage); }
傳遞字符串
#include<stdio.h> #include<stdlib.h> #include"string.h" size_t stringLength(char* string) { size_t length = 0; while(*(string++)) { length++; } return length; } int main() { char* error="ERROR: "; char* errorMessage="NOT Enough memory"; char* buffer=(char*)malloc(strlen(error)+strlen(errorMessage)+1); strcpy(buffer,error); strcat(buffer, errorMessage); printf("%s\n",buffer); printf("%s\n",error); printf("%s\n",errorMessage); printf("%d\n",buffer); printf("%d\n",stringLength(buffer)); }
傳遞字符常量的指針
給應用程序傳遞參數
返回字符串
函數返回字符串時,它返回的實際是字符串的地址。重點是如何返回合法的地址,可以返回以下三種對象之一的引用:字符量/動態分配的內存/本地字符串變量。
函數指針與字符串