- 指针
- 指针数组:存放指针的数组,是一个数组
- 使用方法 int*p1[3]={&a,&b,&c};
- 指针数组名代表首元素地址: p1=&pa[0]=&&a;
- 数组的指针
- int (*p)[4]=arr //arr是一个地址
- 用指针来访问一维数组
- int arr[5]={32,234,54,6,642};
- int *p2=arr=&arr[0];
- 用指针来访问二维数组
- int arr3[j]
- arr[0],arr[0]+1,arr[0]2… 为列指针
- arr[0],arr[1],arr[2]… 为行指针
- a+i的地址等同于a,*(a+i)=&a[0];
- arr3为数组的首元素的首地址
arr3==&arr[0]==&arr[0][0]==&arr3==arr[0]==arr[0][0]
- 二维数组指针变量说明的一般形式:把二位数组变成用指针来访问
- int arr4[j];
- int(*p4)[j]=arr4 //定义一个数组指针,指向含j个元素的一维数组
- arr4=&arr4[0]=&arr4[0][0]=arr[0]
- (*(p4+i)+j)获取二位数组的每个元素
- 字符串指针
- char *str = “hallo world”; //str是一个指针
- sizeof(str)==8;
- strlen(str)==“字符长度”==11;
- 第i个字符的值为*(str+i);
- 字符串指针的知识点
- char *str; //野指针
- char *str=NULL; //这个指针不可用
- str=malloc(100) //给指针分配100个字节
- char ch3[100]; char *str=ch3; //也可以用
- 字符数组
- char[10]=“hahaha”;默认最后一个/0
- char arr5[4][6]={“halo”,”editor”,”make”};
- 最后一个默认/0
- 指针函数:参数为指针的函数
- int *p6=max(&a,&b); //搞不懂
- 函数指针
- int(*p)(int a,int b); //初始化 //返回值是一个指针
- p=sum; ⬅️int sum(x,y); //p为指向函数的首地址
- int max=p(a,5); //a可以是一个地址
- int getMax(int *p,int len){}; //p传递一个数组名
|
|