标签:
1.指针数组:顾名思义,指针数组就是数组里面元素都是指针,代码如下:
#include <stdio.h> int main(int argc, const char * argv[]) { // insert code here... //printf("Hello, World!\n"); int a=1,b=2;//先定义两个变量 int *p[]={&a,&b};//然后定义数组,数组元素都是指针 printf("%p\n",p[0]); printf("%p\n",p[1]); return 0; }
2.数组指针:即指针指向数组中的元素,代码如下:
#include <stdio.h> int main(int argc, const char * argv[]) { // insert code here... //数组指针 int nums[]={1,2,3,4,5,6};//定义一个数组 //int *p=&nums[0]; int *p=nums;//此语句和上面一句话是等价的,默认取数组的首地址,即数组第一个元素的地址 printf("%d\n",*p); printf("%d\n",*p+1);//*p+1 可以取到*p对应数组元素的下一个元素 printf("--------\n"); for(int i=0;i<sizeof(nums)/sizeof(int);i++)//用数组指针便利这个数组 { printf("%d\n",*p+i); } return 0; }
3.指针函数:即函数的返回值为指针的函数:
#include <stdio.h> //定义一个函数,返回两个数中较大的地址 int *max(int *pa,int *pb)//定义函数,int *函数名(参数) { return *pa>*pb ?pa:pb;//返回大数的地址 } int main(int argc, const char * argv[]) { // insert code here... int a=5,b=3; printf("a=%p,b=%p\n",&a,&b);//打印a和b的地址 int *p=max(&a,&b);//传入参数,分别是a和b的地址 printf("%p\n",p);//输出较大数的地址 }
// 输入小写数字,输出大写星期几 #include <stdio.h> char *getDay(int n)//指针函数 { //定义一个指针数组,用来返回地址 char *days[]= { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日", }; return days[n-1];//返回地址 } int main(int argc, const char * argv[]) { // insert code here... //printf("Hello, World!\n"); char *pday=getDay(6);//定义一个指针接收函数的返回值 printf("%s\n",pday);//打印出这个指针的内容 return 0; }
4.函数指针:指向函数的指针,就是函数指针
//定义方法:类型 (*函数指针名)(参数)....
未完待续
标签:
原文地址:http://www.cnblogs.com/chenqingxiao/p/4352553.html