日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c++ map中用char数组_C开发实战-指针和字符串

發(fā)布時間:2025/3/20 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ map中用char数组_C开发实战-指针和字符串 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

指針操作字符數(shù)組

首先定義一個字符數(shù)組char_array,該數(shù)組占據(jù)11個字節(jié),因為初始化值是字符串常量,而字符串常量以0結(jié)尾

char char_array[] = "helloworld";int size = sizeof(char_array);//char_array的大小是11個字節(jié) 因為字符串以0結(jié)尾printf("字符數(shù)組char_array的大小是%d個字節(jié)", size);

然后定義指針變量p_char_array來操作字符數(shù)組,指針變量p_char_array的值char_array是數(shù)組元素的首地址,即h的地址。
指針變量p_char_array的類型是char *,大小為4個字節(jié)。

char *p_char_array = char_array;//指針p_char_array的大小是4個字節(jié)printf("指針p_char_array的大小是%d個字節(jié)", sizeof(p_char_array));

操作指針變量p_char_array使用printf()函數(shù)結(jié)合字符串格式符%s輸出字符數(shù)組char_array的內(nèi)容,此時p_char_array表示字符數(shù)組char_array的首地址

//以字符串的方式打印 %s表示打印一個字符串,需要傳遞首個元素的地址,p_char_array表示首元素地址printf("p_char_array = %s", p_char_array);

指針變量p_char_array進行算術(shù)運算時,例如p_char_array+2,如果printf()函數(shù)傳遞的字符串格式符為%s,則會輸出從第三個元素到最后一個元素的值

//打印第三個元素后的字符串為loworldprintf("p_char_array+2值是%s",p_char_array+2);

指針變量p_char_array 取內(nèi)容*(p_char_array+3),表示獲取char_array數(shù)組第四個元素的內(nèi)容,即l

//打印第四個字符元素為lprintf("*(p_char_array+3)值是%c",*(p_char_array+3));

使用strlen()函數(shù)獲取有效字符的個數(shù)時,傳遞char_array或者是p_char_array的返回結(jié)果都是10

printf("char_array的有效字符個數(shù)為%d個",strlen(char_array));printf("p_char_array的有效字符個數(shù)為%d個",strlen(p_char_array));

通過指針修改指定位置元素的值,其中p_char_array表示第一個元素的地址,*p_char_array表示第一個元素地址對應(yīng)的內(nèi)容

//將第一個元素的值改成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);

也可以像遍歷整型數(shù)組那樣來使用指針遍歷字符數(shù)組

printf("通過指針來遍歷字符數(shù)組元素的內(nèi)容");for (int i = 0; i < size;i++) {//通過指針來遍歷字符數(shù)組元素的內(nèi)容printf("char_array[%d] = %c ",i,*(p_char_array+i));}

程序運行效果

指針操作字符數(shù)組

#define _CRT_SECURE_NO_WARNINGS#include #include #include /*指針操作字符數(shù)組@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){//定義字符數(shù)組 初始化值為helloworld0,字符串默認以0結(jié)尾char char_array[] = "helloworld";int size = sizeof(char_array);//char_array的大小是11個字節(jié) 因為字符串以0結(jié)尾printf("字符數(shù)組char_array的大小是%d個字節(jié)", size);//定義指針操作字符數(shù)組//char_array表示數(shù)組元素的首地址char *p_char_array = char_array;//指針p_char_array的大小是4個字節(jié)printf("指針p_char_array的大小是%d個字節(jié)", 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的有效字符個數(shù)為%d個",strlen(char_array));printf("p_char_array的有效字符個數(shù)為%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("通過指針來遍歷字符數(shù)組元素的內(nèi)容");for (int i = 0; i < size;i++) {//通過指針來遍歷字符數(shù)組元素的內(nèi)容printf("char_array[%d] = %c ",i,*(p_char_array+i));}system("pause");return 0;}

指針操作字符串常量

字符串常量存儲在文字常量區(qū),文字常量區(qū)的內(nèi)容不能被修改,因此當指針變量指向了字符串常量時,不能通過指針修改字符串常量的內(nèi)容

#define _CRT_SECURE_NO_WARNINGS#include #include /*指針與字符串常量當指針指向了字符串常量的首地址,不能通過指針修改字符串常量的內(nèi)容@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 存在文字常量區(qū) //p_char_array 保存的是'l'字符的地址 // "" 在使用時取得是字符串常量的首元素地址 p_char_array = "learning c programming";printf("指針變量p_char_array占據(jù)%d個字節(jié)",sizeof(p_char_array));//測試字符串常量learning c programming的字節(jié)數(shù)為23個 空格也會占一個字節(jié),0也會占用一個字節(jié)printf("字符串常量learning c programming占據(jù)%d個字節(jié)",sizeof("learning c programming"));//learning c programming的有效字符個數(shù)是22printf("字符串常量learning c programming的有效字符個數(shù)是%d",strlen("learning c programming"));//文字常量區(qū)的內(nèi)容不能改變,因此不能通過指針修改字符串常量learning c programming//*p_char_array = 'm';//printf("*p_char_array = %s ",*p_char_array);system("pause");return 0;}

字符指針作為函數(shù)參數(shù)

#define _CRT_SECURE_NO_WARNINGS#include #include /*字符指針作為函數(shù)的參數(shù)@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*//* 實現(xiàn)兩個字符串的拼接字符指針作為函數(shù)的參數(shù)*/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;}/*實現(xiàn)兩個字符串的拼接字符指針作為函數(shù)的參數(shù)返回兩個字符串拼接結(jié)果的指針*/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[]){//實現(xiàn)將字符串變量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;}

程序運行結(jié)果

const修飾的字符數(shù)組指針

#define _CRT_SECURE_NO_WARNINGS#include #include /*const修飾的字符數(shù)組指針@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修飾的是指針,即不能通過指針修改指向的空間內(nèi)容const char*p_char_array = buf;//*p_char_array = 'j'; //不能通過p_char_array修改那塊空間的內(nèi)容//指針變量q初始化之后不能改變q指針變量本身的指向const char const* q = buf;system("pause");return 0;}

字符指針數(shù)組

一級字符指針數(shù)組

#define _CRT_SECURE_NO_WARNINGS#include #include /*一級字符指針數(shù)組@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("遍歷一級字符指針數(shù)組的元素:");for (int i = 0; i < sizeof(p_str_array) / sizeof(p_str_array[0]);i++) {printf("%s ", p_str_array[i]);}//獲取數(shù)組第一個元素的第一個字符,即'o'字符printf("一級字符指針:數(shù)組中第一個元素的第一個字符是%c",*(p_str_array[0]));//獲取數(shù)組第二個元素的第二個字符,即'w'字符// p_str_array[1] 表示第二個元素的首地址// p_str_array[1]+1表示第二個元素的第二個字符地址printf("一級字符指針:數(shù)組中第二個元素的第二個字符是%c", *(p_str_array[1]+1));//獲取數(shù)組中第三個元素的第三個字符,即'r'字符// p_str_array[2] 表示第三個元素的首地址// p_str_array[2]+2表示第三個元素的第三個字符地址printf("一級字符指針:數(shù)組中第三個元素的第二個字符是%c", *(p_str_array[2] + 2));system("pause");return 0;}

程序運行結(jié)果

二級字符指針數(shù)組

#define _CRT_SECURE_NO_WARNINGS#include #include /*二級字符指針數(shù)組@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" };/**********************二級指針*********************///定義指針保存字符指針數(shù)組元素的首地址char ** mulit_p_str_array = p_str_array;//通過二級遍歷數(shù)組的元素printf("遍歷二級字符指針數(shù)組的元素:");//mulit_p_str_array 表示p_str_array數(shù)組元素的首地址for (int i = 0; i < sizeof(p_str_array) / sizeof(p_str_array[0]);i++) {printf("%s ",*(mulit_p_str_array+i));}//獲取數(shù)組第一個元素的第一個字符,即'o'字符//mulit_p_str_array 表示p_str_array的首元素地址//*multi_p_str_array表示one首元素的地址//**multi_p_str_array表示one首元素地址的內(nèi)容即'o'字符printf("二級字符數(shù)組指針:數(shù)組中第一個元素的第一個字符是%c", **mulit_p_str_array);//獲取數(shù)組第二個元素的第二個字符,即'w'字符// mulit_p_str_array[1] 表示第二個元素的首地址// mulit_p_str_array[1]+1表示第二個元素的第二個字符地址printf("二級字符數(shù)組指針:數(shù)組中第二個元素的第二個字符是%c", *(mulit_p_str_array[1]+1));//獲取數(shù)組中第三個元素的第三個字符,即'r'字符// mulit_p_str_array[2] 表示第三個元素的首地址// mulit_p_str_array[2]+2表示第三個元素的第三個字符地址printf("二級字符數(shù)組指針:數(shù)組中第三個元素的第二個字符是%c",*(mulit_p_str_array[2]+2) );system("pause");return 0;}

程序運行結(jié)果

字符指針數(shù)組作為main函數(shù)的參數(shù)

main函數(shù)的兩個參數(shù)int argc, char* argv[] 分別表示參數(shù)的個數(shù),以及字符串元素的首地址,

#define _CRT_SECURE_NO_WARNINGS#include #include /*字符指針數(shù)組作為main函數(shù)的參數(shù)@author liuguanglei 18601767221@163.com@wechat 18601767221@website ittimeline.net@version 2020/11/25*/int main(int argc, char* argv[]){//argc 是可執(zhí)行程序的參數(shù)個數(shù)printf("argc = %d ",argc);//argv是字符指針數(shù)組,保存的是字符串首元素的地址for (int i = 0; i < argc; i++) {printf("%s",argv[i]);}system("pause");return 0;}

程序運行時可以給main函數(shù)傳遞參數(shù),在Visual Studio 2019,選中解決方案的項目(例如c-core-advanced),然后右鍵屬性,找到調(diào)試,命令行參數(shù),填寫對應(yīng)的參數(shù)即可,多個參數(shù)使用空格隔開。

程序運行結(jié)果
其中第一個參數(shù)由系統(tǒng)傳參,表示可執(zhí)行程序的絕對路徑

總結(jié)

以上是生活随笔為你收集整理的c++ map中用char数组_C开发实战-指针和字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。