能不能将一个二级指针的值赋给一级指针
展开全部
可以。
程序例子,声明 **a 和 *p,动态分配 3行4列,或 12个元素:
#include <stdio.h>
int main()
{
int **a;
int i,j, NR=3,NC=4;
int *p;
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;j<NR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
for (j=0;j<NR;j++)for (i=0;i<NC;i++) a[j][i]=i+j*NC+1;
p = (int*) malloc(sizeof(int *) * NR * NC);
*p= **a; // 二级指针的值赋给一级指针
printf("%d %d\n", *p, **a); //输出 a[0][0] 的值
p = *a; // 二级指针的值(这里实际是地址) 赋给一级指针
for (j=0;j<NR;j++)for (i=0;i<NC;i++) printf("%d ",p[i+j*NC]); // 输出所有数组元素的值
return 0;
}
输出:
1 1
1 2 3 4 5 6 7 8 9 10 11 12
程序例子,声明 **a 和 *p,动态分配 3行4列,或 12个元素:
#include <stdio.h>
int main()
{
int **a;
int i,j, NR=3,NC=4;
int *p;
a = (int **) malloc(sizeof(int *) * NR);
for (j=0;j<NR;j++){
a[j] = (int *) malloc(sizeof(int) * NC);
}
for (j=0;j<NR;j++)for (i=0;i<NC;i++) a[j][i]=i+j*NC+1;
p = (int*) malloc(sizeof(int *) * NR * NC);
*p= **a; // 二级指针的值赋给一级指针
printf("%d %d\n", *p, **a); //输出 a[0][0] 的值
p = *a; // 二级指针的值(这里实际是地址) 赋给一级指针
for (j=0;j<NR;j++)for (i=0;i<NC;i++) printf("%d ",p[i+j*NC]); // 输出所有数组元素的值
return 0;
}
输出:
1 1
1 2 3 4 5 6 7 8 9 10 11 12
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询