用指针 做二维数组
#include<stdio.h>#include<string.h>
int main()
{
int x=0;
scanf("%d",&x);
int i=0;
int j=0;
int a;
int*p=a;
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
{
scanf("%d",*p);
}
}/*输入矩阵*/
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
{
printf("%d ",a);/*输出矩阵*/
}
printf("\n");
}
return 0;
}
定义了一个指针p 指向二维数组,输入数组的时候,一直不对,这里scanf("%d",*p);应该怎么改 你可以使用指针来表示二维数组。下面是一个例子:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int rows, cols;
printf("请输入二维数组的行数和列数:");
scanf("%d %d", &rows, &cols);
// 动态分配内存
int **arr = (int**)malloc(rows * sizeof(int*));
for(int i = 0; i < rows; i++) {
arr = (int*)malloc(cols * sizeof(int));
}
// 输入数组元素
printf("请输入二维数组的元素:\n");
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
scanf("%d", &arr);
}
}
// 打印数组元素
printf("二维数组的元素为:\n");
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
printf("%d ", arr);
}
printf("\n");
}
// 释放内存
for(int i = 0; i < rows; i++) {
free(arr);
}
free(arr);
return 0;
}
这段代码首先要求你输入二维数组的行数和列数,然后动态分配内存来创建二维数组。接下来,你需要输入二维数组的元素,然后打印出来。最后,记得释放内存以避免内存泄漏。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-11-28 12:03
你可以使用指针来表示二维数组。下面是一个例子:
大佬 我的意思 输入的时候 能不能用指针或者指针变量输入 -kasha 发表于 2023-11-28 13:28
大佬 我的意思 输入的时候 能不能用指针或者指针变量 ...
当然可以使用指针或指针变量来输入二维数组的元素。以下是一个示例代码:#include #include int main(){ int rows, cols; printf("请输入二维数组的行数和列数:"); scanf("%d %d", &rows, &cols); // 动态分配内存 int **arr = (int**)malloc(rows * sizeof(int*)); for(int i = 0; i < rows; i++) { arr = (int*)malloc(cols * sizeof(int)); } // 输入数组元素 printf("请输入二维数组的元素:\n"); for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { scanf("%d", *(arr + i) + j); } } // 打印数组元素 printf("二维数组的元素为:\n"); for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { printf("%d ", *(*(arr + i) + j)); } printf("\n"); } // 释放内存 for(int i = 0; i < rows; i++) { free(arr); } free(arr); return 0;}在这段代码中,我们使用指针和指针算术运算符来获取二维数组中每个元素的地址,并使用指针变量进行输入。通过 *(arr + i) + j 获取 arr 的地址并进行输入。请注意,其他部分的逻辑与之前的代码相同。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]