c - 如何通过将原始数组传递给c中的函数来修改原始数组
问题描述
我需要通过将二维数组传递给函数来修改二维数组的代码,以便我在函数原始数组中编写的内容应该得到修改
#include<stdio.h>
void display(int *arr){
for(int i = 0;i < 4;i++){
printf(" %d " , arr[i]);
}
}
void modify(int *arr){
arr[0] = arr[1];
}
int main() {
int a[4] = {0,1,2,3};
display(a);
modify(a);
display(a);
}
}
一维数组的输出为 0123 1123 你如何为二维数组编码 ----------
#include<stdio.h>
void pass(int *arr,int n){
arr[0][0]=arr[0][1];
}
int main() {
int n,i,j;
scanf("%d",&n);
int a[n][n];
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
pass(a,n);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d",a[i][j]);
}
}
}
我收到二维数组的错误
解决方案
要拥有一个二维数组,请使用a[n][n]
.
要将可变长度数组传递给函数,请传递大小 ,int n
然后是指向数组的指针int (*arr)[n]
。
#include<stdio.h>
void pass ( int n, int (*arr)[n]){
arr[0][0] = arr[0][1];
}
int main ( void) {
int n,i,j;
printf ( "enter array size\n");
scanf ( "%d", &n);
int a[n][n];
for ( i = 0; i < n; i++) {
for ( j = 0; j < n; j++) {
printf ( "enter array[%d][%d] value\n", i, j);
scanf ( "%d", &a[i][j]);
}
}
pass ( n, a);
for ( i = 0; i < n; i++) {
for ( j = 0; j < n; j++) {
printf ( "%d\t", a[i][j]);
}
printf ( "\n");
}
return 0;
}
推荐阅读
- docker - 如何为 Docker 主机上的卷挂载点指定用户 ID 和组 ID
- puppeteer - 使用 puppeteer 生成 PDF 时“break-inside: Avoid”被忽略
- python - 数字序列的代码 10^8 种可能性
- javascript - 如何在 Angular 中刷新谷歌地图?
- python - 在强化学习的策略梯度中反向传播了哪些损失或奖励?
- ruby-on-rails - Rails,将其他记录值添加到最后的另一个记录值
- sql - 进行实体映射时是否可以 DELETE/INSERT 而不是 DIFF/UPDATE?
- mongodb - mongodb未在架构中显示详细信息的默认值
- java - 如何通过使用c ++中的构造函数获取其父类的变量来在子类中实现抽象类的方法
- c - 无法在 Adafruit FT232H 上使用 gpiod_line_request_output() 访问 gpio 线