指针04 – 零基础入门学习C语言44

第八章:指针04

让编程改变世界

Change the world by program

小结

归纳起来, 如果有一个实参数组, 想在函数中改变此数组中的元素的值, 实参与形参的对应关系有以下4种情况:

(1) 形参和实参都用数组名, 如:

void main()

{

    int a[10];

    f(a, 10);

}

void f(int x[], int n)

{

}

(2) 实参用数组名, 形参用指针变量。如:

void main()

{

    int a[10];

    f (a, 10);

}

f(int *a, int n)

{

}

(3) 实参形参都用指针变量。如:

void main()        

{                     

    int a[10], *p = a;

    f(a, 10);

}

void f(int *x, int n)

{

}

(4) 实参为指针变量, 形参为数组名。如:

void main()                        

{

    int a[10], *p = a;

    f(p, 10);

}

f(int x[], int n)

{

}

源码分析

对数组中10个整数按由大到小顺序排序

程序源代码(点击下载)

多维数组与指针

用指针变量可以指向一维数组中的元素, 也可以指向多维数组中的元素。

但在概念上和使用上, 多维数组的指针比一维数组的指针要复杂一些。

多维数组元素的地址

先回顾一下多维数组的性质,可以认为二维数组是“数组的数组”, 例 :

定义int a[3][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23}};

则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000

则有……

宽客网,量化投资,宽客俱乐部

多维数组元素的地址

宽客网,量化投资,宽客俱乐部

多维数组元素的地址

源码分析

输出二维数组有关的值

程序在此!(点击下载)

指向多维数组元素的指针变量

把二维数组a分解为一维数组a[0],a[1],a[2]之后,设p为指向二维数组的指针变量。

可定义为:int (*p)[4]

它表示p是一个指针变量,它指向包含4个元素的一维数组。若指向第一个一维数组a[0],其值等于a,a[0],或&a[0][0]等。

而p+i则指向一维数组a。

从前面的分析可得出(p+i)+j是二维数组i行j 列的元素的地址,而(*(p+i)+j)则是i行j列元素的值。

二维数组指针变量说明的一般形式为:

类型说明符 (*指针变量名)[长度]

其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。

实战演练

用指针变量输出二维数组元素的值

请看源码!(点击下载)

课后题

通过输入指定行数和列数打印出二维数组对应任一行任一列元素的值。

详细答案将在下期公布,尽情收看!

视频下载
技术, IT技术, 视频教程, C语言



                                                    风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部