⑵指针的比较运算、加法、减法运算、自加自减运算的含义及其应用
函数init(int s[][N],int *b[]),对主函数中的数组a、b的元素分别进行初始化,并返回结果。b中各元素分别存放了二维数组a各行的首列指针。for(u=b,t=s;t
函数main的for(u=b;u
sort函数利用指针运算控制二重循环,实现数组元素从大到小排序。for(p=r;p
函数out(int *r)中的形参指针r接收了实参指针a[0]的值。for(q=r;q
3、指针应用常见错误分析
⑴指针作为函数参数时,实参指针和形参指针其类型、含义、作用要一致,还要注意指针指向的当前对象,否则出错。形实参指针之间不能自动转化。比如,实参是一重指针(一维数组名、一重指针变量、变量的指针、二维数组的列指针),形参可以是相应类型的一维数组名或一重指针变量,但不能是变量的指针;实参是行指针(二维数组名、行指针变量),形参可以是相应类型的二维数组名或行指针变量,不能是变量指针、列指针变量;实参是二重指针(二重指针变量、指针数组名、指针变量的指针),形参可以是相应类型的二重指针变量或指针数组名称。
⑵指针作为函数的形参时杂志网,形参指针只能是变量形式(包括一维数组名、二维数组名、指针数组名,相应的指针变量)如init(int s[][N],int *b[])中的s、b,其实质是相应类型的变量,接收了实参指针(值),使得形参指针变量与实参指针指向同一目标,实现函数之间的多值传递与交换。这是函数之间简单的数值传递无法实现的功能。指针作为函数的参数情况比较复杂,应用很灵活,要具体情况具体分析。例如,函数main中调用out(a[0])时,将a转化为a[0]或*a并作为函数out的实参,因形参是一重指针变量。二维数组是按行方式存储,个元素的存储单元地址是连续的。out函数中将二维数组a模拟成了一维数组,输出各行已排序的二维数组的所有元素值。
⑶通过指针(变量)控制数组元素的指针及元素,控制循环时,指针不能越界。系统对此类越界编译时不作检查,而运行时可能会产生严重错误。需要程序员通过程序自行控制。
⑷另外还要特别注意指针(变量)的当前值(即当前指向的目标对象)及其含义。
2/2 首页 上一页 1 2 |