用c语言编写:定义一个二维数组,使用指针方式为数组赋值,并输出数组中的元素。
时间: 2024-03-25 16:42:14 浏览: 99
好的,以下是用C语言编写的代码实现:
```c
#include <stdio.h>
int main()
{
int arr[3][3]; // 定义一个3行3列的二维数组
// 使用指针方式为数组赋值
int *p = &arr[0][0];
for (int i = 0; i < 9; i++) {
*(p + i) = i + 1;
}
// 输出数组中的元素
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
输出结果为:
```
1 2 3
4 5 6
7 8 9
```
其中,我们使用指针的方式为二维数组赋值,实际上是将二维数组展开成一个一维数组,然后通过指针来访问每个元素。在输出数组元素时,我们使用双重循环来遍历二维数组的每个元素。
相关问题
c语言动态创建二维数组
动态创建二维数组的方法如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows, cols, i, j;
int **arr;
printf("Enter number of rows: ");
scanf("%d", &rows);
printf("Enter number of columns: ");
scanf("%d", &cols);
//动态分配内存
arr = (int **) malloc(rows * sizeof(int *));
for (i = 0; i < rows; i++) {
arr[i] = (int *) malloc(cols * sizeof(int));
}
//给数组赋值
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
arr[i][j] = i * j;
}
}
//打印数组
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%d\t", arr[i][j]);
}
printf("\n");
}
//释放内存
for (i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
首先,通过`scanf`函数读入数组的行和列数。然后,使用`malloc`函数动态分配内存。在这里,我们首先分配一个指向指针的指针`arr`,大小为`rows`个指针。然后,我们为每一行分配`cols`个整数的内存。这样,我们就创建了一个`rows`行、`cols`列的二维数组。
接下来,我们通过两个嵌套的循环为数组赋值。最后,我们再次使用两个嵌套的循环打印数组。最后,我们使用`free`函数释放内存。
注意,动态分配的内存必须手动释放,否则可能会导致内存泄漏。
阅读全文