标签:he1 int pj 数组 printf 多维 pi 指针
#include<stdlib.h> #include<stdio.h>
int main(void) { int he(int *p,int n); //函数声明
int a[5] = {1,2,3,4,5}; int *pi; int (*p)[5]; //只能指向带5个元素的一维数组,不能指向某个元素,p的值应该是一维数组的起始位置 //p = a; //报错,类型不同 p = &a;
//pi = a; //两行是同样的意思,a 就是 &a[0]的地址 pi = &a[0];
printf("%d\n",p[3]); //&a[3]的地址 printf("%d\n",(*p)[3]); //a[3]的值
printf("%d\n",pi[3]); printf("%d\n",*(pi+2));
//我的理解是:虽然都是同样的地址,但是意义不同, //a是数组的首元素地址,就是a[0]的地址,操作的时候+1就是指向下一个元素 //&a是数组的首地址,操作多维数组时,+1就指向下一行数组了 printf("%d\n",a); printf("%d\n",*a); printf("%d\n",&a);
printf("一下是二维数组:\n"); //一维跟二维有不同点 int b[2][3] = {{1,2,3},{11,22,33}}; int (*pj)[3]; pj = b; printf("%d\n",pj); //&b[0] printf("%d\n",pj+1); //&b[1]
printf("%d\n",*pj); //b[0]的值,也就是&b[0][0] printf("%d\n",*(pj+1)); //b[1]的值,也就是&b[1][0] printf("%d\n",(*(pj+1)+1)); //也就是&b[1][1],是地址 printf("%d\n",*(*(pj+1)+1)); //也就是b[1][1],是值
printf("%d\n",(*pj)[1]); //指针数组对应下标指向的值 printf("%d\n",*pj[1]); //对应二维数组第二行,当超出数组范围也不会报错,但是值就不确定了 printf("%d\n",pj[1][1]); //用类似数组的方式访问值
printf("%d\n",b); printf("%d\n",*b); printf("%d\n",&b);
//一维和多维的区别也直接导致当作为函数形参传递时的不同 printf("一维数组的和是:%d\n",he(a,6)); //*p = a,p = &a,跟上面例子相同 printf("二维数组的和是:%d\n",he(*b,6)); //*p = *b,p = b
return 0; }
int he(int *p,int n) //求和的函数 { int he1; he1 = 0; for(int i= 0; i < n; i++,p++) { he1 = he1 + *p; } return he1; }
标签:he1,int,pj,数组,printf,多维,pi,指针 来源: https://www.cnblogs.com/hemage/p/13259959.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。