指针数组和数组指针
2013-07-11 18:37
344 查看
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
int a[3][2] = {{1,2},{3,4},{5,6}};
int *p = a[0];
int (*q)[2];//数组指针 q是一个指针,指向一维数组,每个一维数组有2个元素,所以q是行指针
q = a;
int *ptr[3];//指针数组,ptr有3个元素,每个元素是一个指针。
for(i = 0; i < 3; i++)
{
ptr[i] = a[i];//保存每一列首数据的地址
for(j = 0; j < 2; j++)
printf("%d",*(ptr[i]+j));
}
printf("\n");
for(i = 0; i < sizeof(a)/sizeof(int); i++)
{
printf("%d",*(p+i));//通过列指针,输出数组元素
}
printf("\n");
for(i=0;i<3;i++,p++)//p可看成是行指针
{
printf("%3d ",**p);//每一行的第一个元素
printf("%3d ",*(*p+1));//每一行的第二个元素
printf("/n");
}
for(i = 0; i < sizeof(a)/sizeof(int); i++)
{
printf("%d",*((int *)q+i));//通过行指针,输出数组元素
}
printf("\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 2; j++)
printf("%d",*(*(q+i)+j));
printf("\n");
for(i = 0; i < 3; i++)
{
printf("%d",*(*(q+i)));
//q保存的是数组的行地址,*q保存的是a[0]的首地址,所以**q取得是数组的首元素
}
printf("\n");
return 0;
}
#include <stdlib.h>
int main()
{
int i,j;
int a[3][2] = {{1,2},{3,4},{5,6}};
int *p = a[0];
int (*q)[2];//数组指针 q是一个指针,指向一维数组,每个一维数组有2个元素,所以q是行指针
q = a;
int *ptr[3];//指针数组,ptr有3个元素,每个元素是一个指针。
for(i = 0; i < 3; i++)
{
ptr[i] = a[i];//保存每一列首数据的地址
for(j = 0; j < 2; j++)
printf("%d",*(ptr[i]+j));
}
printf("\n");
for(i = 0; i < sizeof(a)/sizeof(int); i++)
{
printf("%d",*(p+i));//通过列指针,输出数组元素
}
printf("\n");
for(i=0;i<3;i++,p++)//p可看成是行指针
{
printf("%3d ",**p);//每一行的第一个元素
printf("%3d ",*(*p+1));//每一行的第二个元素
printf("/n");
}
for(i = 0; i < sizeof(a)/sizeof(int); i++)
{
printf("%d",*((int *)q+i));//通过行指针,输出数组元素
}
printf("\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 2; j++)
printf("%d",*(*(q+i)+j));
printf("\n");
for(i = 0; i < 3; i++)
{
printf("%d",*(*(q+i)));
//q保存的是数组的行地址,*q保存的是a[0]的首地址,所以**q取得是数组的首元素
}
printf("\n");
return 0;
}
相关文章推荐
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 指针数组、数组指针与指针函数、函数指针
- 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
- 数组指针和指针数组的区别
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解
- C语言中数组与指针、数组指针和函数指针
- C,C++ 指针数组与数组指针
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- 什么是指针?关于指针的数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解
- 指针数组与数组指针
- C语言学习8:malloc返回的void*类型指针不可以做更改,free双重释放,二维数组的初始化和打印,a和a[0]和a[0][0]的区别,数组指针(*p)[3],指针数组*a[10],动态内存分配版约瑟夫环,动态分配版去空格和逗号处理,二级指针与二维数组互用
- 数组,指针,数组指针
- C++ 指针数组,数组指针,以及函数指针,以及堆中的分配规则
- 【C语言基础】对指针数组,数组指针,函数指针, 函数指针数组,指向函数指针数组的指针的理解
- 数组指针 与 指针数组
- 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
- C语言复习 -- 指针数组和数组指针
- 数组指针和指针数组
- 数组、指针、指针数组、数组指针(转)
- 再谈一维数组、二维数组与指针、数组指针