做网站公司人员,优设网视频剪辑,网站建设有什么意义,金戈枸橼酸西地那非片今天学习了指针的两个常用场景#xff0c;在此记录#xff0c;以便后续查看。 场景1#xff1a;传数组 在c语言中#xff0c;我们在定义函数的时候是没有办法直接传一个数组进去的#xff0c;为了解决这个问题#xff0c;我们一般将数组的名称当作一个指针参数传入到函数… 今天学习了指针的两个常用场景在此记录以便后续查看。 场景1传数组 在c语言中我们在定义函数的时候是没有办法直接传一个数组进去的为了解决这个问题我们一般将数组的名称当作一个指针参数传入到函数的参数列表中因为数组的名称类似于一个常量指针将其传入函数后再传入数组的长度就可以在函数内部访问这个数组。原因在于指针记录的是一个地址我们将这个地址作为一个参数传入方法内部时相当于这个方法也访问到了这个地址进而可以访问到这个数组。但这里有一个问题我们一般在调用子函数时传入的参数一般都是重新找一块地址将参数内容复制子函数使用的是复制的部分这样子函数就不会改变外部参数的值。但现在用指针的话就不会进行复制了而是直接访问同一地址这样就可能对原数组进行更改。解决方法就是在传参时给传入的指针前加上const表示只读。这样原数组就不会被改变如果子函数中尝试改变原数组系统就会报错。举例如下
#include stdio.hint CAL(int *p,int count) {int total p[0];for (int i 1; i count; i){total p[i];}return total;}int main() {int a[] {1,2,3,4,5};int bCAL(a,5);printf(%d\n,b);return 0;}
结果15 场景2传回多个参数 我们在声明函数时c语言一般只能返回一个值像其他语言比如C#中我们可以使用out参数来返回多个值但c语言没有这种参数我们一般用指针来进行多个参数的返回。就像上面说的指针会指向一个地址我们在传入参数时我们假设想返回两个值那我们就给函数传入两个指针我们在内部改变这两个指针地址所存的数据后我们在函数外部访问这个两个地址即可即可完成多个参数的返回。举例如下
#include stdio.hvoid TwoTotal(int *p,int count1,int *q,int count2,int *pp,int*qq) {*pp p[0];for (int i 1; i count1; i){*pp p[i];}*qq p[0];for (int i 1; i count2; i){*qq q[i];}}int main() {int p[] { 1,2,3,4,5 };int q[] {1,2,3,4,5,6,7};int total1 0;int total2 0;TwoTotal(p,5,q,7,total1,total2);printf(%d\n, total1);printf(%d\n, total2);return 0;}
结果
15
28