×

二维指针数组?二维指针数组初始化

前端技术网 前端技术网 发表于2024-01-29 12:39:14 浏览3599 评论0

抢沙发发表评论

一、C语言二维数组输入与输出

代码,实现先输入二维数组的行数m和列数n,并再输入m*n个整型数据存到动态二维数组中。最后输出所有二维数组的元素值。

intmain()

二维指针数组?二维指针数组初始化

{

int**p;//定义二维指针。

intm,n;//行数和列数。

inti,j;

scanf("%d%d",&m,&n);//输入行数和列数。

if(m<=0||n<=0)return-1;//行数或列数非法。

二维指针数组?二维指针数组初始化

p=(int**)malloc(sizeof(int*)*m);//申请一组一维指针空间。

for(i=0;i<m;i++)

p<i>=(int*)malloc(sizeof(int)*n);//对于每个一维指针,申请一行数据的空间。

for(i=0;i<m;i++)

for(j=0;j<n;j++)

scanf("%d",&p<i>[j]);//输入第i行第j列的数据。其中&p<i>[j]也可以写作p<i>+j或者是*(p+i)+j.功能相同。

printf("输入的数组为%d行%d列:\n",m,n);

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)//这个循环可以输出一行元素。

printf("%d",p<i>[j]);//输出i行j列的元素。

printf("\n");//每行输入结束加换行符。

}

//释放内存

for(i=0;i<m;i++)

free(p<i>);

free(p);

return0;

}

扩展资料:

函数:free

功能:与malloc()函数配对使用,释放malloc函数申请的动态内存。(另:对于free(p)这句语句,如果p是NULL指针,那么free对p无论操作多少次都不会出问题。如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。)

用法;voidfree(void*ptr);

程序例:

C/C++代码如下:

#include<string.h>

#include<stdio.h>

#include<alloc.h>//or#include<malloc.h>

intmain(void)

{

char*str;

/*allocatememoryforstring*/

str=(char*)malloc(10);

/*copy"Hello"tostring*/

strcpy(str,"Hello");

/*displaystring*/

printf("Stringis%s\n",str);

/*freememory*/

free(str);

str=NULL;

return0;

}

二、二维数组的数组名

除了两种特殊情况,二维数组名都是指向二维数组中的第一个一维数组的数组指针。

特殊情况一:sizeof(数组名)[统计数组长度]

特殊情况二:&数组名[对数组名取地址,得到的是二维的数组指针,数组指针的步长为整个二维数组的长度]

三、二维int数组是什么类型的指针

二维int数组是行类型的指针。

譬如:

二维数组的行指针类型int(p)[N]。因为[]运算符的优先级比大,所以必须要有一个括号;要不然写成int*p[N];这就成了一个指针数组了,这个指针数组存储N个指向整型数据的指针。

p++操作会使p指向下一行的首地址,这是因为p是行指针,指向的是一行。

四、python字典可以用二维数组形式访问吗

python中是没有数组的,只有列表(比如list=[1,2,3],二维的就是嵌套,比如list=[1,[1,2]])和字典(比如dic{1:2,3:4})他们和数组组大的区别就是数组是有序的,而他们是无序的

关于二维指针数组的内容到此结束,希望对大家有所帮助。