日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c int转char数组_C语言 指向数组和字符串的指针

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c int转char数组_C语言 指向数组和字符串的指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實例1

我們在pointer_test.c的文件中寫一個test2()函數,我們定義一個有3個元素的字符數組初始化值分別為,’A’, ’B’, ’C’,然后定義一個字符指針pc,把數組ca的首地址復制給字符指針pc,然后通過訪問指針變量pc,來讀取指針變量pc所指向地址的數據,代碼如下:

void test2(){ char ca[3]={'A','B','C'}; char *pc; /*第一步 : 所有變量都保存在內存中,我們打印一下變量的存儲地址*/ printf("ca =%p",ca); printf("&pc =%p",&pc); /*第二步:所有變量都可以保存某些值,接著賦值并打印*/ //前面已經有ca[3]={'A','B','C'}; pc = ca; printf("pc =%p",pc); /*第三步:使用指針:1)取值 2)移動指針*/ printf("pc =%p",pc); printf("*pc =0x%x",*pc); pc=pc+1; printf("pc =%p",pc); printf("*pc =0x%x",*pc); pc=pc+1; printf("pc =%p",pc); printf("*pc =0x%x",*pc); printf("//================="); }

main()函數

int main(int argc,char **argv){ printf("sizeof(char )=%d",sizeof(char )); printf("sizeof(int )=%d",sizeof(int )); printf("sizeof(char *)=%d",sizeof(char *)); printf("sizeof(char **)=%d",sizeof(char **)); printf("//================="); //test0(); //test1(); test2(); return 0;}

編譯

gcc -m32 -o pointer_test pointer_test.c

運行:

./pointer_test

結果:

sizeof(char ) = 1 sizeof(int ) = 4 sizeof(char *) = 4 sizeof(char **) = 4 //============== ca =0xffb946b9 &pc =0xffb946b4 pc =0xffb946b9 pc =0xffb946b9 *pc =0x41 pc =0xffb946ba *pc =0x42 pc =0xffb946bb *pc =0x43 //=================

分析:

  • 第一步:

首先定義一個3個元素的字符數組ca(數組名表示該數組存儲的首地址),然后定義一個字符指針pc,然后通過printf()函數把定義這兩個變量在內存中的地址打印出來。

  • 第二步:

執行pc = ca;就是把數組ca的首地址復制給指針變量pc,然后通過printf()函數打印pc的值可以看出pc的值就是字符數組ca的首地址0xffb946b9。

  • 第三步:

通過移動指針我們可以發現數組所占用的內存是連續的,0x41(的ascii值‘A‘),0x42(的ascii值‘B‘),0x43(的ascii值‘C‘)。如圖

實例2

我們在pointer_test.c的文件中寫一個test3()函數,我們定義一個有3個元素的整型數組ia,初始化值分別為,0x12345678, 0x87654321, 0x13572468,然后定義一個整型指針pi,把數組ia的首地址復制給整型指針pi,然后通過訪問指針變量pi,來讀取指針變量pi所指向地址的數據,代碼如下:

void test3(){ int ia[3]={0x12345678,0x87654321,0x13572468}; int *pi; /*第一步 : 所有變量都保存在內存中,我們打印一下變量的存儲地址*/ printf("ia =%p",i); printf("&pi =%p",&pi); /*第二步:所有變量都可以保存某些值,接著賦值并打印*/ //前面已經有ia[3]={0x12345678,0x87654321,0x13572468}; pi = ia; printf("pi =%p",pi); /*第三步:使用指針:1)取值 2)移動指針*/ printf("pi =%p",pi); printf("*pi =0x%x",*pi); pi=pi+1; printf("pi =%p",pi); printf("*pi =0x%x",*pi); pi=pi+1; printf("pi =%p",pi); printf("*pi =0x%x",*pi); printf("//================="); }

把main()函數test2()修改為test3().

編譯

gcc -m32 -o pointer_test pointer_test.c

運行:

./pointer_test

結果:

sizeof(char ) = 1 sizeof(int ) = 4 sizeof(char *) = 4 sizeof(char **) = 4 //============== ia =0xff91c060 &pi =0xff91c05c pi =0xff91c060 pi =0xff91c060 *pi =0x12345678 pi =0xff91c064 *pi =0x87654321 pi =0xff91c068 *pi =0x13572468

分析:

  • 第一步:

我們定義一個有3個元素的整型數組ia數組名表示該數組存儲的首地址),初始化值分別為,0x12345678, 0x87654321, 0x13572468, 然后定義一個整型指針pi,然后通過printf()函數把定義這兩個變量在內存中的地址打印出來。

  • 第二步:執行pi = ia; 就是把數組ia的首地址復制給指針變量pi,然后通過printf()函數打印pi的值可以看出pi的值就是整型數組ia的首地址0xff91c060。
  • 第三步:我們知道 pi是整型指針變量,并且整型變量占用四個字節,所以整型指針變量pi是以四字節為單元進行訪問的,所以pi和pi+1之間的差是一個整型變量的大小(4個字節)。

實例3

定義一個指向字符串的指針pc,然后對字符串指針進行初始化設置為abc,代碼如下:

void test4(){ char *pc="abc"; /*第一步 : 所有變量都保存在內存中,我們打印一下變量的存儲地址*/ printf("&pc =%p",&pc); /*第二步:所有變量都可以保存某些值,接著賦值并打印*/ //前面已經有pc="abc"; /*第三步:使用指針:1)取值 2)移動指針*/ printf("pc =%p", pc); printf("*pc =%c",*pc); printf("pc str=%s", pc); }

把main()函數test3()修改為test4().編譯

gcc -m32 -o pointer_test pointer_test.c

運行:

./pointer_test

結果:

sizeof(char ) = 1 sizeof(int ) = 4 sizeof(char *) = 4 sizeof(char **) = 4 //============== &pc =0xfff49a68 pc =0x08048b4b *pc =a pc str=abc

分析:

  • 第一步:

定義一個指向字符串的指針pc,然后對字符串指針進行初始化設置為abc,此時,指針變量pc的值就是字符串abc的首地址,然后通過printf()函數把指針pc的地址打印出來為0xfff49a68

  • 第二步:

首先通過printf()函數打印出指針變量pc的值(字符串abc的首地址),pc的值為0x08048b4b,然后通過pc指針訪問第一個字符(pc的就是字符串的首地址),所以pc的值就是字符‘a‘的地址,所以*pc的值就是’a‘,如圖所示:

下面分析一下指向數組的指針和指向字符串的指針:

char ca[3]={'A','B','C'}; char *pc0 = ca;

pc0是指向字符數組的字符指針,pc0就是數組首元素的地址,pc0=&a[0]

char *pc11=”abc”;

pc是指向字符串的字符指針,pc1就是字符串”abc”的首字符’a’的地址。

「新品首發」STM32MP157開發板火爆預售!首批僅300套

總結

以上是生活随笔為你收集整理的c int转char数组_C语言 指向数组和字符串的指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。