八、指针
指针的类型就是所指向的程序实体的类型,大小也一样。指针的定义往往和其指向的程序实体一起。
?
指针的定义:
类型 *数组名[元素个数]
Int a;
Int *p=&a;
?
指针定义的时候必须要初始化,有时候不想让指针指向任何的变量,可以用null这个关键字来置空。而&符号可以看成是*的逆符号。
?
在指针作为函数的参数的时候,注意*符号和&的对立使用,得到想要的地址或者参数值。
?
?
一般指针变量的使用用*和&符号可以实现,需要注意的是一下三个方面:
1、? 指针和数组的使用;
2、? 指针和字符串的使用;
3、? 指针数组;
4、? 指针函数;
5、? 带参数的主函数;
?
下面用一个程序简单地演示上述知识点:
#include<stdio.h>
?
?
int print1()
{
???????? return 1;
}
?/* 主函数带参数演示 */
int main(int argc,char *argv[])
{
????????
???????? /* 一维数组的演示 */
???????? int i,j;
???????? int a[5]={1,2,3,4,5};
???????? int *p;
???????? p=a;
????????
???????? for(i=0;i<5;i++)
???????? {
?????????????????? printf("%d ",*(p+i));
???????? }
???????? printf("\n");
????????
????????
???????? /* 二维数组的演示 */
???????? int b[3][3]={1,2,3,4,5,6,7,8,9};
???????? int (*p2)[3]=b;
????????
???????? for(i=0;i<3;i++)
???????? {
?????????????????? for(j=0;j<3;j++)
?????????????????? {
??????????????????????????? printf("%d ",*(*(p2+i)+j));
?????????????????? }
?????????????????? printf("\n");
???????? }
????????
???????? /* 指针字符串的演示 */
???????? char num[20]="abcdefg";
???????? char *p3;
???????? p3=num;
???????? printf("%s\n",p3);
????????
???????? /* 指针数组数组的演示 */
???????? int *p4[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
???????? for(i=0;i<5;i++)
???????? {
?????????????????? printf("%d ",**(p4+i));
???????? }
???????? printf("\n");
????????
???????? /* 指针函数的使用 */
???????? int (*fun)();
???????? fun=print1;
???????? int x=(*fun)();
???????? printf("%d\n",x);
????????
???????? return 0;
}