本文主要是介绍C语言-一级指针与二级指针的详解(图文并茂,深入浅出),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C语言-一级指针与二级指针的详解(图文并茂,深入浅出)
。 https://blog.csdn.net/Xminyang/article/details/81902637
一、一级指针
如下图所示,整型指针xptr指向变量x的地址。
int *xptr;
int x=10;xptr = &x;
- 1
- 2
- 3
- 4
- 5
源码:
#include <stdio.h>
int main()
{int *xptr = NULL;int x = 10; xptr = &x; printf("x = %d, *xptr = %d\n", x, *xptr);printf("&x = %p, xptr = %p\n", &x, xptr);return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
运行结果:
二、二级指针
实现方法一
如下图所示,先为二级整型指针ptr分配空间,然后赋值。
int **ptr=NULL;
int num=4, size=4, i,j;ptr = (int **)malloc(num*sizeof(int*));
for(i=0; i<num; ++i)
{*(ptr+i) = (int *)malloc(size*sizeof(int));*(*(ptr+i) +j)=(i+1)*j;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
源码:
#include <stdio.h>
#include <stdlib.h>
int main()
{int **ptr = NULL;int num=4, size=4, i, j;ptr = (int **)malloc(num * sizeof(int *));for(i=0; i<num; ++i){ *(ptr+i) = (int *)malloc(size * sizeof(int));for(j=0; j<size; ++j)*(*(ptr+i)+j) = (i+1)*j;} for(i=0; i<num; ++i){ for(j=0; j<size; ++j){printf("(%d, %d) -> %d\t", i, j, *(*(ptr+i)+j));} printf("\n");} return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
运行结果:
实现方法二
如下图所示,先为二级整型指针ptr分配空间,然后赋值。
与实现方法一的不同之处,在于使用数组形式就行相关操作。
int **ptr=NULL;
int num=4, size=4, i;ptr = (int **)malloc(num*sizeof(int*));
for(i=0; i<num; ++i)
{ptr[i]= (int *)malloc(size*sizeof(int));ptr[i][j]=(i+1)*j;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
源码:
#include <stdio.h>
#include <stdlib.h>
int main()
{int **ptr = NULL;int num=4, size=4, i, j;ptr = (int **)malloc(num * sizeof(int *));for(i=0; i<num; ++i){ptr[i] = (int *)malloc(size * sizeof(int));for(j=0; j<size; ++j){ptr[i][j] = (i+1)*j;}} for(i=0; i<num; ++i){ for(j=0; j<size; ++j){ printf("[%d, %d] -> %d\t", i, j, ptr[i][j]); } printf("\n");} return 0;
}
运行结果:
这篇关于C语言-一级指针与二级指针的详解(图文并茂,深入浅出)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!