#include <stdio.h>
void fun(int *a, int *s, int n){
int i,j,k
k=n*n
for (j=0j<nj++){
s[j]= *(a+j*n)
for (i=0i<ni++)
if (*(a+j*n + i) >s[j]) s[j]= *(a+j*n + i)
}
}
int main ( )
{
int a[5][5],s[5]
int i,j
for (j=0j<5j++) for (i=0i<5i++) a[j][i]=j*10+i
fun( &a[0][0], s,5)
for (i=0i<5i++) printf("%d ",s[i])
return 0
}
#include <stdio.h>/*求a+b*/
int plus(int a, int b) { return a + b}
/*求a-b*/
int minus(int a, int b) { return a - b}
/*求a*b*/
int multiply(int a, int b) { return a * b}
/*求a/b*/
int divide(int a, int b) { return a / b}
typedef int (*FUN)(int,int)/*定义基本四则运算的标准形式*/
char op[]="+-*/"/*四则运算的符号*/
FUN fun[]={&plus, &minus, &multiply, &divide}/*四则运算的函数指针*/
/*下面的程序演示了如何用一个通用的函数指针连续处理多种不同的函数运算*/
int main(void)
{
int a = 6, b = 3, i = 0
for(i = 0i <4i++)
printf("%d %c %d = %d\n", a, op[i], b, (*(fun + i))(a,b))
return 0
}
/*运行结果:
6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2
上面的程序说明,如果你有很多种类似的 *** 作,形式上都一致,只不过内容有所不同,那么你可以用函数指针去代替这些函数,这样有时候会很方便
*/
1.从内存上来讲 系统为指针分寸内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间。
2指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初始化以后不允许再重新绑定对象。
3.所以引用访问对象是直接访问。指针访问对象是间接访问。
4。如果pa是指针,那么*pa就是引用了。
但是两者在作为形参的时候非常相似,区别是指针拷贝副本,引用不拷贝。程序如下:
#include<stdio.h>
void pt(int * pta,int * ptb)
{
int *ptc
ptc=ptapta=ptbptb=ptc
}
void ref(int &ra,int &rb)
{
int rc
rc=rara=rbrb=rc
}
void main()
{
int a=3int b=4
int *pa=&aint *pb=&b
pt(pa,pb)
printf("zhizhen: a=%d,b=%d\n",a,b)
ref(a,b)
printf("yinyong: a=%d,b=%d\n",a,b)
}
输出结果如下图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)