标签:
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
/*
1.指针的定义格式:
数据类型 *指针变量名
2.指针的赋值:
指针变量内存储的是指针所指向变量的地址
指针变量名=&... 或者 指针变量名 =数组名
注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义
*/
1 int main() 2 { 3 4 //定义指针变量 5 int *p; 6 7 //定义整形变量 8 int a=10; 9 10 //给指针变量赋值,给的是变量a的地址符 11 p=&a; 12 13 //获取指针变量的值 14 printf("%d",*p); 15 16 }
3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针
1 int main() 2 { 3 //定义char*型的指针变量 4 char *p; 5 // 定义字符数组 6 char arr[]={‘a‘,‘b‘,‘c‘,‘\0‘}; 7 //给指针变量赋值 也可以 p =arr[0] 8 p=arr; 9 10 //利用指针访问数组 11 12 printf("%c",*(p+1)); //代表获取数组从0+1位置点元素 13 printf("%c",*p); //访问的是数组的第0个元素 14 15 return 0; 16 }
4.指针指向函数
定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)
给指针变量赋值:指针变量名=函数名称
调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)
作用:这个指针就是用来间接调用函数的
1 #include <stdio.h> 2 3 //声明函数 4 int test(int,int); 5 6 int main() 7 { 8 //定义指向函数的指针 9 int (*p)(int,int); 10 //给指针赋值 11 p=test; 12 //利用指针调用函数,并接受返回值 13 int sum= p(1,2); 14 int sum2= (*p)(10,20); 15 //输出 16 printf("sum=%d,sum2=%d",sum,sum2); 17 18 return 0; 19 } 20 //定义函数 21 int test(int a,int b) 22 { 23 return a+b; 24 }
6.指向指针的指针
定义:数据类型 **指针变量名
赋值:指针变量名=&变量
1 int main() 2 { 3 4 int a=10; 5 //定义指针,指向a 6 int *p=&a; 7 //定义指向指针的指针 8 int **p2; 9 //给p2赋值 10 p2=&p; 11 12 //利用指针指向a改变a的值 13 *p=20; 14 printf("p改变:a=%d\n",a); 15 //利用指向指针的指针改变a的值 16 *(*p2)=30; //*p2 就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a 17 printf("p2改变:a=%d",a); 18 return 0; 19 }
标签:
原文地址:http://www.cnblogs.com/xbl-hm/p/4953862.html