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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言 指针数组-字符指针数组整型指针数组 char*s[3] int*a[5] 数组指针int(*p)[4]

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 指针数组-字符指针数组整型指针数组 char*s[3] int*a[5] 数组指针int(*p)[4] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本介紹

1.指針數組:由n個指向整型元素的指針而組成,里面存放指針
Int *ptr[3];

2.地址:
ptr[i]:元素地址
&ptr[i]:指針地址

圖示

代碼:

內存布局:

代碼

#include<stdio.h> #include<string.h> //指針數組--int void pointer(int *arr,int len) {int i, *ptr[10];for(i=0;i<len;i++){ptr[i]=&arr[i];printf("arr[%d]=%d address=%p\n",i,arr[i],&arr[i]);printf("ptr[%d]=%d address=%p self-address=%p\n",i,*ptr[i],ptr[i],&ptr[i]);} }//指針數組--char void cpointer(char* s,int len) {char *c[4];int i=0;printf("s=%s address=%p self-address=%p\n",s,s,&s);while(i<len){c[i]=&s[i];printf("c[%d]=%c address=%p self-address=%p\n",i,*c[i],c[i],&c[i]);i++;} }void cpointer2(char *s,int len) {char *c[4];int i;printf("s=%s address=%p self-address=%p\n",s,s,&s);for(i=0;i<len;i++){c[i]=&s[i];}char *p=c[0];for(i=0;i<len;i++){printf("c[%d]=%c address=%p self-address=%p\n",i,*p,p,&p);p++;} } int main() {int i,arr[10];int len=sizeof(arr)/sizeof(int);char *s="uiop";for(i=0;i<len;i++){arr[i]=99;}printf("int_pointer:\n");pointer(arr,len);printf("char_pointer:\n");cpointer(s,strlen(s));printf("char_pointer2:\n");cpointer2(s,strlen(s));getchar();return 0; }

輸出:

int_pointer: arr[0]=99 address=010FF984 ptr[0]=99 address=010FF984 self-address=010FF854 arr[1]=99 address=010FF988 ptr[1]=99 address=010FF988 self-address=010FF858 arr[2]=99 address=010FF98C ptr[2]=99 address=010FF98C self-address=010FF85C arr[3]=99 address=010FF990 ptr[3]=99 address=010FF990 self-address=010FF860 arr[4]=99 address=010FF994 ptr[4]=99 address=010FF994 self-address=010FF864 arr[5]=99 address=010FF998 ptr[5]=99 address=010FF998 self-address=010FF868 arr[6]=99 address=010FF99C ptr[6]=99 address=010FF99C self-address=010FF86C arr[7]=99 address=010FF9A0 ptr[7]=99 address=010FF9A0 self-address=010FF870 arr[8]=99 address=010FF9A4 ptr[8]=99 address=010FF9A4 self-address=010FF874 arr[9]=99 address=010FF9A8 ptr[9]=99 address=010FF9A8 self-address=010FF878 char_pointer: s=uiop address=006B5814 self-address=010FF894 c[0]=u address=006B5814 self-address=010FF878 c[1]=i address=006B5815 self-address=010FF87C c[2]=o address=006B5816 self-address=010FF880 c[3]=p address=006B5817 self-address=010FF884 char_pointer2: s=uiop address=006B5814 self-address=010FF894 c[0]=u address=006B5814 self-address=010FF860 c[1]=i address=006B5815 self-address=010FF860 c[2]=o address=006B5816 self-address=010FF860 c[3]=p address=006B5817 self-address=010FF860

字符數組指針

具體分析

#include<stdio.h> #include<string.h> int main() {char *p[]={"水滸傳","三國演義","西游記","紅樓夢"};int i=0;printf("方法1:\n");for(i=0;i<4;i++){/*字符指針char *pstr="good dog ww";printf("字符指針指向的字符串內容:%s\n",pstr);所以這里的%s-->p[i]數組:地址傳遞(指針)%c *pstr是取出一個字符這里不能*p[i],p[i]本身就是一個字符數組指針,無法單獨取出一個字符*/ //p[0]="水滸傳" %s p[0]就直接是取出字符串printf("p[%d]=%s address=%p self-address=%p\n",i,p[i],p[i],&p[i]);}printf("方法2:\n");char *ptr=p[0];i=0;while(i<=3){printf("p=%s address=%p self-address=%p\n",ptr,ptr,&ptr);i++;ptr=p[i];//每一個p[i]的字符內容不同,導致其間隔不同,所以不能使用ptr++}getchar();return 0; }

整型數組指針

#include<stdio.h> #include<string.h> //整型指針 int main() {int a=1,b=2,c=4,d=90;int*a1=&a,*a2=&b,*a3=&c,*a4=&d;int *arr[]={a1,a2,a3,a4};int i;printf("方法1:\n");for(i=0;i<4;i++){//arr[0]=a1=&a=1的地址--%d arr[i]只會取到地址//*arr[i]才能取到值printf("arr[%d]=%d address=%p self-address=%p\n",i,*arr[i],arr[i],&arr[i]);}printf("方法2:\n");i=0;int *p=arr[0];while(i<=3){printf("arr[%d]=%d address=%p self-address=%p\n",i,*p,p,&p);i++;p=arr[i];//p++不行 隨機存儲的,+1不是下一個元素的地址}getchar();return 0; }

區分

指針數組:
由n個指向整型元素的指針而組成,里面存放指針
Int *ptr[3];

數組指針:
指向一個有n個元素的數組的指針,里面存放的是整型變量(int類型長度為n的數組的首地址),存的是一個數組地址,而不是單個元素
int(*p)[n]
代碼詳解

#include<stdio.h> #include<stdlib.h> #include<string.h> //指針使用 int(*p)[n]與int *p[n]的區別 int main() {int i;// int(*p)[n]--指向一個有n個元素的數組的指針,里面存放的是整型變量(int類型長度為n的數組的首地址)//存的是一個數組地址,而不是單個元素int a[3]={1,2,3};int b[3][3]={{1,4,0},{2,5,6},{7,6,8}};int(*arr)[3]=b;printf("int(*arr)[n]:\n");for(i=0;i<3;i++){printf("arr[%d]=%d address=%p self-address=%p\n",i,*arr[i],arr[i],&arr[i]);}//int *p[n]--指針數組,由n個指向整型元素的指針而組成,里面存放指針int *p[3];for(i=0;i<3;i++){p[i]=&a[i];}printf("int*p[n]:\n");for(i=0;i<3;i++){//數組printf("arr[%d]=%d address=%p self-address=%p\n",i,*p[i],p[i],&p[i]);}getchar();return 0; }

總結

以上是生活随笔為你收集整理的C语言 指针数组-字符指针数组整型指针数组 char*s[3] int*a[5] 数组指针int(*p)[4]的全部內容,希望文章能夠幫你解決所遇到的問題。

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