C语言进阶(牟海军)C 语言指针理解 续

来源:互联网 发布:如何连接网络摄像头 编辑:程序博客网 时间:2024/05/29 14:08

上一篇讲到了指针的理解,现在我们讲述一下指针的指针的概念,指针的指针用到最多的就是二维数组的概念了

给个例子

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>int main(){srand(time(0));int **a;int row,col;printf("please input a row:\n");scanf("%d",&row);printf("please input a col:\n");scanf("%d",&col);a = (int **)malloc(sizeof(int *)*row);for (int i=0;i<row;i++){a[i] = (int *)malloc(sizeof(int)*col);}for (int i=0;i<row;i++){for (int j=0;j<col;j++){a[i][j] = rand()%100;}}printf("the array number is:\n");for (int i=0;i<row;i++){for (int j=0;j<col;j++){printf("%d\t",a[i][j]);}printf("\n");}int **p = (int **)malloc(sizeof(int *)*row);//指针数组for (int i=0;i<row;i++){p[i] = a[i];}printf("指针数组:\n");for (int i=0;i<row;i++){for (int j=0;j<col;j++){printf("%d\t",*(p[i]+j));}printf("\n");}//int (*p)[]int **q = (int **)malloc(sizeof(int *)*row);//指针数组q = a;printf("数组指针:\n");for (int i=0;i<row;i++){for (int j=0;j<col;j++){printf("%d\t",*(*(p+i)+j));}printf("\n");}system("pause");return 0;}

二维数组的初始化就不用说了

现在讲一下指针数组和数组指针

指针数组的定义是

类型名 *数组名【数组长度】

int *p[8]

数组指针的定义是

类型名 (*指针名)【数组长度】

int (*p)[8]

指针数组相当于定义了一个8个整形的指针变量,用于存放地址单元,本质是数组

数组指针本质是指针,该指针指向的是有8个整形元素的数组

0 0
原创粉丝点击