1.指针的定义: 数据类型 *指针变量名
2.指针的赋值:指针变量名=&... 或者 指针变量名 =数组名
注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义
eg.
- int main()
- {
- int *p;//定义指针变量
- int a=10;
- p=&a;//给指针变量赋值,给的是变量a的地址符
- printf("%d",*p);//获取指针变量的值
-
- }
复制代码
3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针
eg .
- int main()
- {
-
- char *p;//定义指针变量
- char arr[]={'a','b','c','\0'};
- p=arr;//给指针变量赋值 也可以 p =arr[0]
-
- //利用指针访问数组
-
- printf("%c",*(p+1)); //代表获取数组从0+1位置点元素
- printf("%c",*p); //访问的是数组的第0个元素
-
- return 0;
- }
复制代码
4.指针指向函数
定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)
给指针变量赋值:指针变量名=函数名称
调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)
作用:这个指针就是用来间接调用函数的
eg.
- #include <stdio.h>
- //声明函数
- int test(int,int);
- int main()
- {
- //定义指向函数的指针
- int (*p)(int,int);
- //给指针赋值
- p=test;
- //利用指针调用函数,并接受返回值
- int sum= p(1,2);
- int sum2= (*p)(10,20);
- //输出
- printf("sum=%d,sum2=%d",sum,sum2);
-
- return 0;
- }
- //定义函数
- int test(int a,int b)
- {
- return a+b;
- }
复制代码
5.返回指针的函数
定义函数:返回值类型 *函数名(){}
- #include <stdio.h>
- //声明函数
- char *test();
- int main()
- {
- //调用指针函数
- char *result=test();
- //输出
- printf("%s",result);
- return 0;
- }
- //定义函数
- char *test()
- {
- return "abc";
- }
复制代码
6.指向指针的指针
定义:数据类型 **指针变量名
赋值:指针变量名=&变量
- int main()
- {
-
- int a=10;
- //定义指针,指向a
- int *p=&a;
- //定义指向指针的指针
- int **p2;
- //给p2赋值
- p2=&p;
-
- //利用指针指向a改变a的值
- *p=20;
- printf("p改变:a=%d\n",a);
- //利用指向指针的指针改变a的值
- *(*p2)=30; //*p2 就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a
- printf("p2改变:a=%d",a);
- return 0;
- }
复制代码 |
|