c++ map中用char数组_C开发实战-指针和字符串
指針操作字符數組
首先定義一個字符數組char_array,該數組占據11個字節,因為初始化值是字符串常量,而字符串常量以0結尾
char char_array[] = "helloworld";int size = sizeof(char_array);//char_array的大小是11個字節 因為字符串以0結尾printf("字符數組char_array的大小是%d個字節", size);然后定義指針變量p_char_array來操作字符數組,指針變量p_char_array的值char_array是數組元素的首地址,即h的地址。
指針變量p_char_array的類型是char *,大小為4個字節。
操作指針變量p_char_array使用printf()函數結合字符串格式符%s輸出字符數組char_array的內容,此時p_char_array表示字符數組char_array的首地址
//以字符串的方式打印 %s表示打印一個字符串,需要傳遞首個元素的地址,p_char_array表示首元素地址printf("p_char_array = %s", p_char_array);指針變量p_char_array進行算術運算時,例如p_char_array+2,如果printf()函數傳遞的字符串格式符為%s,則會輸出從第三個元素到最后一個元素的值
//打印第三個元素后的字符串為loworldprintf("p_char_array+2值是%s",p_char_array+2);指針變量p_char_array 取內容*(p_char_array+3),表示獲取char_array數組第四個元素的內容,即l
//打印第四個字符元素為lprintf("*(p_char_array+3)值是%c",*(p_char_array+3));使用strlen()函數獲取有效字符的個數時,傳遞char_array或者是p_char_array的返回結果都是10
printf("char_array的有效字符個數為%d個",strlen(char_array));printf("p_char_array的有效字符個數為%d個",strlen(p_char_array));通過指針修改指定位置元素的值,其中p_char_array表示第一個元素的地址,*p_char_array表示第一個元素地址對應的內容
//將第一個元素的值改成j ,即h換成了j,指針指向了第一個元素*p_char_array = 'j';//jelloworldprintf("p_char_array = %s ",p_char_array);指針變量也可以進行自增運算,例如p_char_array++,自增后修再通過指針變量修改元素的值時,此時修改的是第二個元素的值,而且指針也是指向第二個元素
p_char_array++;//把第二個元素的字符改為k,即e換成了k,而且指針指向了第二個元素*p_char_array = 'k';//klloworldprintf("p_char_array = %s ", p_char_array);也可以像遍歷整型數組那樣來使用指針遍歷字符數組
printf("通過指針來遍歷字符數組元素的內容");for (int i = 0; i < size;i++) {//通過指針來遍歷字符數組元素的內容printf("char_array[%d] = %c ",i,*(p_char_array+i));}程序運行效果
指針操作字符數組
#define _CRT_SECURE_NO_WARNINGS#include #include #include /*指針操作字符數組@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){//定義字符數組 初始化值為helloworld0,字符串默認以0結尾char char_array[] = "helloworld";int size = sizeof(char_array);//char_array的大小是11個字節 因為字符串以0結尾printf("字符數組char_array的大小是%d個字節", size);//定義指針操作字符數組//char_array表示數組元素的首地址char *p_char_array = char_array;//指針p_char_array的大小是4個字節printf("指針p_char_array的大小是%d個字節", sizeof(p_char_array));//以字符串的方式打印 %s表示打印一個字符串,需要傳遞首個元素的地址,p_char_array表示首元素地址printf("p_char_array = %s", p_char_array);//打印第三個元素后的字符串loworldprintf("p_char_array+2值是%s",p_char_array+2);//打印第四個字符元素為lprintf("*(p_char_array+3)值是%c",*(p_char_array+3));printf("char_array的有效字符個數為%d個",strlen(char_array));printf("p_char_array的有效字符個數為%d個",strlen(p_char_array));//將第一個元素的值改成j ,即h換成了j,指針指向了第一個元素*p_char_array = 'j';//jelloworldprintf("p_char_array = %s ",p_char_array);p_char_array++;//把第二個元素的字符改為k,即e換成了k,而且指針指向了第二個元素*p_char_array = 'k';//klloworldprintf("p_char_array = %s ", p_char_array);p_char_array = char_array;printf("通過指針來遍歷字符數組元素的內容");for (int i = 0; i < size;i++) {//通過指針來遍歷字符數組元素的內容printf("char_array[%d] = %c ",i,*(p_char_array+i));}system("pause");return 0;}指針操作字符串常量
字符串常量存儲在文字常量區,文字常量區的內容不能被修改,因此當指針變量指向了字符串常量時,不能通過指針修改字符串常量的內容
#define _CRT_SECURE_NO_WARNINGS#include #include /*指針與字符串常量當指針指向了字符串常量的首地址,不能通過指針修改字符串常量的內容@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){char char_array[] = "helloworld";char* p_char_array = char_array;// 字符串常量 learning c programming 存在文字常量區 //p_char_array 保存的是'l'字符的地址 // "" 在使用時取得是字符串常量的首元素地址 p_char_array = "learning c programming";printf("指針變量p_char_array占據%d個字節",sizeof(p_char_array));//測試字符串常量learning c programming的字節數為23個 空格也會占一個字節,0也會占用一個字節printf("字符串常量learning c programming占據%d個字節",sizeof("learning c programming"));//learning c programming的有效字符個數是22printf("字符串常量learning c programming的有效字符個數是%d",strlen("learning c programming"));//文字常量區的內容不能改變,因此不能通過指針修改字符串常量learning c programming//*p_char_array = 'm';//printf("*p_char_array = %s ",*p_char_array);system("pause");return 0;}字符指針作為函數參數
#define _CRT_SECURE_NO_WARNINGS#include #include /*字符指針作為函數的參數@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*//* 實現兩個字符串的拼接字符指針作為函數的參數*/void my_str_concat(char *src, char *dist) {int length=strlen(src);int i = 0;while (*(dist+i)!=0) {//*(src + length+i) = *(dist + i);src[length + i] = dist[i];i++;}*(src + length + i) = 0;}/*實現兩個字符串的拼接字符指針作為函數的參數返回兩個字符串拼接結果的指針*/char* my_str_concat_result(char *src,char *dist) {int length = strlen(src);int i = 0;while (*(dist+i)!=0) {src[length + i] = dist[i];i++;}*(src+length + i) = 0;return src;}int main(int argc, char* argv[]){//實現將字符串變量str1和字符串變量str2拼接char str1[256] = "hello";char str2[128] = "world";char * p_str1 = str1;char * p_str2 = str2;my_str_concat(p_str1,p_str2);printf("str1 = %s ",str1);char* concat_result=my_str_concat_result(p_str1,p_str2);printf("concat_result = %s",concat_result);system("pause");return 0;}程序運行結果
const修飾的字符數組指針
#define _CRT_SECURE_NO_WARNINGS#include #include /*const修飾的字符數組指針@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){char buf[1024] = "helloworld";//此時const修飾的是指針,即不能通過指針修改指向的空間內容const char*p_char_array = buf;//*p_char_array = 'j'; //不能通過p_char_array修改那塊空間的內容//指針變量q初始化之后不能改變q指針變量本身的指向const char const* q = buf;system("pause");return 0;}字符指針數組
一級字符指針數組
#define _CRT_SECURE_NO_WARNINGS#include #include /*一級字符指針數組@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){//初始化三個字符變量char left = 'a', middle = 'b', right = 'c';char* char_pointer_array[] = {&left,&middle,&right};//另外一種初始化方式//將 one two three 三個字符串常量首元素的地址存儲在指針變量中str_arraychar* p_str_array[] = {"one","two","three"};printf("遍歷一級字符指針數組的元素:");for (int i = 0; i < sizeof(p_str_array) / sizeof(p_str_array[0]);i++) {printf("%s ", p_str_array[i]);}//獲取數組第一個元素的第一個字符,即'o'字符printf("一級字符指針:數組中第一個元素的第一個字符是%c",*(p_str_array[0]));//獲取數組第二個元素的第二個字符,即'w'字符// p_str_array[1] 表示第二個元素的首地址// p_str_array[1]+1表示第二個元素的第二個字符地址printf("一級字符指針:數組中第二個元素的第二個字符是%c", *(p_str_array[1]+1));//獲取數組中第三個元素的第三個字符,即'r'字符// p_str_array[2] 表示第三個元素的首地址// p_str_array[2]+2表示第三個元素的第三個字符地址printf("一級字符指針:數組中第三個元素的第二個字符是%c", *(p_str_array[2] + 2));system("pause");return 0;}程序運行結果
二級字符指針數組
#define _CRT_SECURE_NO_WARNINGS#include #include /*二級字符指針數組@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){//將 one two three 三個字符串常量首元素的地址存儲在指針變量中p_str_arraychar* p_str_array[3] = { "one","two","three" };/**********************二級指針*********************///定義指針保存字符指針數組元素的首地址char ** mulit_p_str_array = p_str_array;//通過二級遍歷數組的元素printf("遍歷二級字符指針數組的元素:");//mulit_p_str_array 表示p_str_array數組元素的首地址for (int i = 0; i < sizeof(p_str_array) / sizeof(p_str_array[0]);i++) {printf("%s ",*(mulit_p_str_array+i));}//獲取數組第一個元素的第一個字符,即'o'字符//mulit_p_str_array 表示p_str_array的首元素地址//*multi_p_str_array表示one首元素的地址//**multi_p_str_array表示one首元素地址的內容即'o'字符printf("二級字符數組指針:數組中第一個元素的第一個字符是%c", **mulit_p_str_array);//獲取數組第二個元素的第二個字符,即'w'字符// mulit_p_str_array[1] 表示第二個元素的首地址// mulit_p_str_array[1]+1表示第二個元素的第二個字符地址printf("二級字符數組指針:數組中第二個元素的第二個字符是%c", *(mulit_p_str_array[1]+1));//獲取數組中第三個元素的第三個字符,即'r'字符// mulit_p_str_array[2] 表示第三個元素的首地址// mulit_p_str_array[2]+2表示第三個元素的第三個字符地址printf("二級字符數組指針:數組中第三個元素的第二個字符是%c",*(mulit_p_str_array[2]+2) );system("pause");return 0;}程序運行結果
字符指針數組作為main函數的參數
main函數的兩個參數int argc, char* argv[] 分別表示參數的個數,以及字符串元素的首地址,
#define _CRT_SECURE_NO_WARNINGS#include #include /*字符指針數組作為main函數的參數@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){//argc 是可執行程序的參數個數printf("argc = %d ",argc);//argv是字符指針數組,保存的是字符串首元素的地址for (int i = 0; i < argc; i++) {printf("%s",argv[i]);}system("pause");return 0;}程序運行時可以給main函數傳遞參數,在Visual Studio 2019,選中解決方案的項目(例如c-core-advanced),然后右鍵屬性,找到調試,命令行參數,填寫對應的參數即可,多個參數使用空格隔開。
程序運行結果
其中第一個參數由系統傳參,表示可執行程序的絕對路徑
總結
以上是生活随笔為你收集整理的c++ map中用char数组_C开发实战-指针和字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: curl head请求_CURL速查
- 下一篇: python判断ip地址是否合法_pyt