c语言指针函数使用方法 c语言指针函数使用方法图解( 三 )


指针数组说明的一般形式为: 类型说明符 * 数组名 [ 数组长度 ]
其中类型说明符为指针值所指向的变量的类型 。例如: int *pa[3] 表示 pa 是一个指针数组,它有三个数组元素, 每个元素值都是一个指针,指向整型变量 。通常可用一个指针数组来指向一个二维数组 。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数组 。图 6—6 表示了这种关系 。
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
main()
{
int i;
for(i=0;i3;i++)
printf("%d,%d,%d/n",a[i][2-i],*a[i],*(*(a+i)+i));
for(i=0;i3;i++)
printf("%d,%d,%d/n",*pa[i],p[i],*(p+i));
}
本例程序中,pa 是一个指针数组,三个元素分别指向二维数组 a 的各行 。然后用循环语句输出指定的数组元素 。其中 *a[i] 表示 i 行 0 列元素值; *(*(a+i)+i) 表示 i 行 i 列的元素值; *pa[i] 表示 i 行 0 列元素值;由于 p 与 a[0] 相同,故 p[i] 表示 0 行 i 列的值; *(p+i) 表示 0 行 i 列的值 。读者可仔细领会元素值的各种不同的表示方法 。应该注意指针数组和二维数组指针变量的区别 。这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的
C语言-函数指针/*
函数指针c语言指针函数使用方法,关键是后面两个字“指针”c语言指针函数使用方法,顾名思义,是一个指向函数的指针
原理:函数在创建好c语言指针函数使用方法了后,函数的代码会在内存中占有个位置,这时我们创造一个指针来指向这个地址,这个指针就叫函数指针
函数指针不可以移动,想要移动指针的位置来指向函数的下一个指令的想法是错误的
函数指针的要求,
1,首先这个指针,要和函数的返回类型一样
2,指针的*和名字,要用小括号括起来//不括起来就是指针函数c语言指针函数使用方法了,意思就变成 , 函数返回一个指针了
3,最右边的小括号里形参位置的类型,形参的个数,也要和函数定义时的形参一致,只要类型,不要形参名即可,
但是加上形参名也可以,没毛?。?看上去也更清晰
*/
#include
void swapchar(char *a, char *b)
{
char t;
t = *a;
*a = *b;
*b = t;
}
void swapchar2(char * a2, char * b2)
{
printf("this is swapchar2");
}
int main(void)
{
char chf = 'a', chg = 'j';
void(*p)(char * a, char * b);//定义函数指针、形参名字a、b可有可无,但有的话看上去更清晰,只要函数定义的类型、参数类型、以及参数个数 , 与这个指针一致,那么这个指针p , 就可以指向它
p = swapchar;//p指针接管swapchar函数,只要给函数名字,就可以给过去了
printf("chf=%c,chg=%c ", chf, chg);
p(chf, chg);
printf("chf=%c,chg=%c ", chf, chg);
p = swapchar2;//这里把swapchar2函数的地址,给了p,这时p从swapchar地址,转移到了swapchar2这里 。
p(chf,chg);
return 0;
}
C语言 指针方法?#includestdio.h
int main()
{
int a,b,c,s[3],t;
int *x,*y,*z;//定义指针变量
x=a;//将a的地址赋给指针x , 下同
y=b;
z=c;
scanf("%d%d%d",x,y,z);
s[0]=*x;//将指针x所指向的变量值赋给数组s的第一个元素;依次类推
s[1]=*y;
s[2]=*z;
for(int i=0;i3;i++)//冒泡排序
for(int j=0;j3-i-1;j++)
if(s[j]s[j+1])
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
for(int i=0;i3;i++)
printf("%d ",s[i]);

推荐阅读