int *f(int *p,int *q);//返回指针p和q所指数值的大值
int m=1,*r=&m;//r为指向m的指针
示例:
#include <stdio.h>
int main(void) {
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1); //*ptr相当于&(a[5])
printf("%d,%d",*(a+1),*(ptr-1)); //输出2 , 5
}
*(a+1)就是a[1],*a就是a[0],
示例:
#include <stdio.h>
int main(void) {
int arr[][3]={1,2,3,4,5,6};//2行3列的二维数组
int (*ptr)[3]=arr;//一个指向整型数组的指针
printf("%d,%d\n",(*ptr)[0],(*ptr)[1]); //输出1 2
ptr++;//表示指向arr的下一行
printf("%d,%d\n",(*ptr)[0],(*ptr)[1]); //输出4 5
}
用指针方式实现数组相乘运算2x3*3x4
用2x4的数组保存数据
参数传值
参数传递分为:传值和传地址
#include <stdio.h>
void change_value(int x)
{
x=x+10;
}
void change_address(int *x) //*x表示一个指向x整数的指针
{
*x=*x+10;
}
int main() {
int a=3;
change_value(a);
printf("a=%d\n",a); //3
change_address(&a);
printf("a=%d\n",a); //13
}