↑ 收起筛选 ↑
C语言动态二维数组分配子函数,在主函数中无法正常...
2020-10-15

这肯定访问不了啊.. 你得清楚, 任何语法都得遵循一些基本原则,不可能凭空变出魔术来.. c语言里本质上说,任何传递都是传值(忘记谭浩强C吧..), 你传一个pArray进去相当于给他一个没初始化过的地址, 这有什么用? 然后在里

把数组当做实参传递,传递的只是数组的元素的首地址,比如int a[10];sum(a);数组名就是实参!

我不太看懂你要实现什么操作 是想让b[i][j]=a[j][i]吗 ?是这样的话,你错了一个地方,在主函数中应该是array(a)而不是array(b),因为根据你编写的array子函数,p的指针应该是和a一样的.下面是我小小的修改. #include<stdio.h> #include<conio

传地址进去就好int a【5】;a就是地址;#includevoid output(int *a){ int i; for(i=0;i 追问: 这个能不能运行出来跟编译器有关吗? 追答: 你用的什么编译器 评论0 0 0

int a[20][20];int *P=a;*p++= 这样子赋值

在aver函数的定义域内找不到a的定义,所以报错,把a换成array

以一个3*3的矩阵为例说明矩阵转置#include <stdio.h>int main(){ int a[3][3]; int temp,i,j; //输入 printf("请输入一个3*3的矩阵,回车键换行:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } getchar(); } //转置 for(i=0;i<3;i++) {

#include <stdio.h>void fun(int (*s)[3], int m, int n){ int i, j; for (i = 0; i < m; ++i) { for (j = 0; j < n; ++j) { s[i][j] *= s[i][j]; } }}int main(){ int a[4][3]; int i, j; for (i = 0; i < 4; ++i) { for (j = 0; j < 3; ++j) { scanf("%d", &a[i][j]); } } fun(a, 4, 3); for (i = 0; i < 4; ++i) { for (j =

我不明白,如果两个维度都不是事先确定,你上面要怎么定义?arr[][4];好吧,如果你说的那个可行那就传那两个维度进去.前面arr[i][j]那么就void func(int i,int j,int num)我不敢保证在func里面使用到arr[][]的时候貌似能直接使用arr[i][j],我记得这样用会出错.所以你要运算那个地址.你想要的比如是5行4列的 arr[5][4]你要第第二行第二个数那么就要*(arr+(2-1)*4+2),这样来得到数字如果你事先就知道这个维度的话,直接设定个全局变量然后连数组都不用传进去就可以直接运算的.数组是记录地址的,会直接修改在原来的地方

问题1:#include &lt;stdio.h&gt;void printMatrix(int matrix[][3], int rows) { int i, j; for (i = 0; i &lt; rows; i++) { for (j = 0; j &lt; 3; j++) { printf("%d\t", matrix[i][j]); } printf("\n"); }}int main() { int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; printMatrix(matrix, 3);

延伸阅读: