一、指针: 1、指针是什么?
指针就是地址,地址也叫指针
2、指针变量是什么?
用来存放地址(指针)的变量我们称为指针变量
3、指针大小
指针(地址):在32位下占4个字节php指针,在64位下占8个字节
指针变量:在32位下占4个字节,在64位下占8个字节
上代码
#include
int main()
{
char b='v';
int c=20;
char* p=&b; //字符型指针变量里面存放的是字符变量的地址
int* a=&c;//整型指针 里面存放的是整型变量的地址
//指针变量的大小
printf("char* p:%d\n",sizeof(p));
printf("int* a:%d\n",sizeof(a));
//指针(地址)的大小
printf("char类型 &b:%d\n",sizeof(&b));
printf("int类型 &c:%d\n",sizeof(&c));
return 0;
}
二、数组指针
1、数组指针:是指针,指向数组的指针,可以用指针访问数组的每一个元素
2、指针与数组的访问方式相通:
1>可用指针加下标的方式访问
2>可用指针加步长再进行解引用的方式访问
3、指针与数组没有任何关系
上代码
#include
#include
int main()
{
//数组指针
char a[]="shu zu zhi zheng";
char(* p)[]=&a;//里面存放的是整个数组的地址
//p与 *先结合,所以是指针,指向数组的指针
printf("%s\n",*p);
//将数组指针解引用操作得到的是整个数组
//以指针的方式打印出整个数组元素;
int arr[5]={1,2,3,4,5};
int* q=arr; //让指针指向数组的首元素
int i=0;
int s=sizeof(arr)/sizeof(arr[0]);//计算数组的元素个数
for(i=0;i
三、函数指针
1、函数指针:指向函数的指针,指针变量里面存放的是函数的地址
上代码
#include
#include
void fin()
{
printf("fin函数调用成功!\n");
}
int Max(int a,int b)
{
printf("Max函数调用成功\n");
int max=a;
if(b>max)
{
max=b;
}
return max;
}
int main()
{
//函数指针,函数的返回值 跟形参类型都不可省略
void (*p)()=fin; //定义了一个函数指针
(*p)(); //以指针的方式调用函数(方法一)
p();//以指针的方式调用函数(方法二)
int (*q)(int,int)=Max;//函数名代表的是整个函数的地址
//方法一
int max=(*q)(10,30);
printf("其最大值为:%d\n",max);
//方法二
int s=q(10,30);
printf("其最大值为:%d\n",s);
return 0;
}
四、结构体指针
1、结构体指针:就是指向结构体变量的指针
2、可通过指针的方式访问结构体成员变量(指针->成员变量)
上代码
#include
struct ag{
int a;
char b;
float c;
};
int main()
{
//定义结构体变量并初始化
struct ag s1={10,'b',3.14};
//定义结构体指针并让其指向结构体变量s1;
struct ag* p=&s1;
//通过指针的方式访问结构体成员变量
printf("%d %c %.2f\n",p->a,p->b,p->c);
p->a=20; //通过指针的方式改变成员变量的值
printf("%d %c %.2f\n",p->a,p->b,p->c);
struct ag s2;
struct ag* q=&s2;
scanf("%d %c %f",&q->a,&q->b,&q->c);//给结构体成员变量写入值
printf("%d %c %.2f\n",q->a,q->b,q->c);
return 0;
}
五、二级指针
1.二级指针:指向一级指针
2、二级指针变量:存放一级指针的地址
上代码
#include
#include
int main()
{
int a=10;
int b=48;
printf("b的内容:%d\n",b);
int* p=&a;
printf("%d\n",*p);
*p=20;//通过指针的方式改变a的内容
printf("%d\n",*p);
int** q=&p;//二级指针里面存放的是指针p的地址;
printf("%d\n",**q); //二级指针解引用两次就能得到a的内容
**q=30;//通过指针的方式改变a的内容
printf("%d\n",**q);
*q=&b;//改变一级指针的内容使其指向b
printf("b的内容:%d\n",b);
return 0;
}
(编辑:源码网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|