大家好,今天小编关注到一个比较有意思的话题,就是关于malloc 数组 c语言的问题,于是小编就整理了3个相关介绍malloc 数组 c语言的解答,让我们一起看看吧。
- c语言里面怎么给一个用malloc申请了动态空间的数组赋值?
- C语言二维数组a=(int **) malloc(sizeof(int *) * r)是什么意思?
- 【C语言】编写程序,将一维数组中的元素向右循环移动N次?
c语言里面怎么给一个用malloc申请了动态空间的数组赋值?
比如说intp;p=(int*)malloc(sizeof(int)*n);那么p就相当于数组p[n]的基地址了,所以对它赋值只要用数组的写法:p[i]=x;就可以了
C语言二维数组a=(int **) malloc(sizeof(int *) * r)是什么意思?
a=(int**)malloc(sizeof(int*)*r) 首先,这句话的意思就是使用malloc申请sizeof(int*)*r这么大的内存空间。
其次,因为mallo的返回值是void*类型,所以要进行一个类型转换,你可以转换成任何的类型。
最后,因为你要输出一个3*5的矩阵,所以如果直接定义的话,应该定义为inta[3][5],而这个a就是int**类型,所以你使用malloc分配内存值,要将malloc的内存类型格式化为int**类型。 int**p; inta[3][5]; p=a;//可以这样赋值的。 输出一个3*5数列的例子 #include?<stdio.h> #include?<stdlib.h> int?main() { ????int**?a?=?(int**
)malloc(sizeof(int*)*3); int?i=0,?j=0; for?(i=0;?i<3;?i++) { a[i]?=?(int*
)malloc(sizeof(int)*5); for?(j=0;?j<5;?j++) { *(*(a+i)+j)=j; } } for?(i=0;?i<3;?i++) { for?(j=0;?j<5;?j++) { printf(34;%d\t",?*(*(a+i)+j)); } printf("\n"); } delete[]?a; ????return?0; }
【C语言】编写程序,将一维数组中的元素向右循环移动N次?
程序如下: #include <stdio.h>#include <stdlib.h> main() { int *a,n,N,i,j,tmp; printf("输入数组元素个数:"); scanf("%d",&n); a=(int*)malloc(sizeof(int)*n); printf("输入数组元素:"); for(i=0;i<n;i++) { scanf("%d",&a[i]); } printf("输入循环移动的位数:"); scanf("%d",&N); printf("移位前数组:"); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); for(i=0,j=n-1;i<j;i++,j--) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } for(i=0,j=N-1;i<j;i++,j--) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } for(i=N,j=n-1;i<j;i++,j--) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } printf("移位后数组:"); for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n"); free(a);} 运行截图:
到此,以上就是小编对于malloc 数组 c语言的问题就介绍到这了,希望介绍关于malloc 数组 c语言的3点解答对大家有用。