【426】C 传递数组给函数
参考:C 传递数组给函数
参考:二维数组作为函数参数传递剖析(C语言)(6.19更新第5种)
总结:
一维数组参数,可以是地址、arr[]、arr[n]
二维数组比较复杂,需要提供列的值,否则会报错,可参考上面的网址
#include <stdio.h>
#include <stdlib.h> void myFunc1(int length, int *arr) {
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return;
} void myFunc2(int length, int arr[]) {
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return;
} void myFunc3(int length, int arr[length]) {
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return;
} void myFunc4(int row, int column, int *arr2) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
printf("arr2[%d][%d] = %d ", i, j, *(arr2 + i*column + j));
}
printf("\n");
}
return;
} void myFunc5(int row, int column, int arr2[][column]) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
printf("arr2[%d][%d] = %d ", i, j, arr2[i][j]);
}
printf("\n");
}
return;
} int main() {
int arr[5] = {1, 2, 3, 4, 5}; printf("Parameter is pointer:\n");
myFunc1(5, &arr[0]); // ok with arr printf("Parameter is array[]:\n");
myFunc2(5, &arr[0]); // ok with arr printf("Parameter is array[length]:\n");
myFunc3(5, &arr[0]); // ok with arr int arr2[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("Parameter is pointer:\n");
myFunc4(2, 3, arr2[0]); // &arr2[0][0] is ok, but arr2 is not ok
// *arr2 is ok.
// but actually they have the same address printf("Parameter is pointer:\n");
myFunc5(2, 3, arr2); // not ok with arr2[0]
// not ok with &arr2[0][0] printf("\narr2 = %p\n", arr2);
printf("arr2[0] = %p\n", arr2[0]);
printf("*arr2 = arr2[0] = %p\n", *arr2);
printf("arr2[0][0] = %p\n", &arr2[0][0]);
printf("**arr2 = *arr2[0] = arr2[0][0] = %p\n\n", &arr2[0][0]); printf("address of this two-dimentional array:\n");
printf("arr2 = %p\n", arr2);
for (int i = 0; i < 2; i++) {
printf(" arr2[%d] = %p\n", i, arr2[0]);
for (int j = 0; j < 3; j++) {
printf(" arr2[%d][%d] = %p ", i, j, &arr2[i][j]);
}
printf("\n");
} printf("we can use the unexisted element, interesting!\n");
printf("*arr2 means arr2[0], the first row.\n");
printf("**arr2 means *arr2[0] means arr2[0][0], the first element of the first row.\n");
printf("arr2[1][0] = %d\n", arr2[1][0]);
printf("arr2[0][3] = %d\n", arr2[0][3]);
printf("*(*(arr2 + 1) + 0) = %d\n", *(*(arr2 + 1) + 0));
printf("*(*(arr2 + 0) + 3) = %d\n", *(*(arr2 + 0) + 3));
printf("*(arr2[0] + 1*3 + 0) = %d\n", *(arr2[0] + 1*3 + 0));
printf("*(*arr2 + 1*3 + 0) = %d\n", *(*arr2 + 1*3 + 0));
printf("*(&arr2[0][0] + 1*3 + 0) = %d\n", *(&arr2[0][0] + 1*3 + 0));
printf("*(&arr2[0][0] + 3) = %d\n", *(&arr2[0][0] + 3)); return 0;
}
output:
Parameter is pointer:
1 2 3 4 5
Parameter is array[]:
1 2 3 4 5
Parameter is array[length]:
1 2 3 4 5
Parameter is pointer:
arr2[0][0] = 1 arr2[0][1] = 2 arr2[0][2] = 3
arr2[1][0] = 4 arr2[1][1] = 5 arr2[1][2] = 6
Parameter is pointer:
arr2[0][0] = 1 arr2[0][1] = 2 arr2[0][2] = 3
arr2[1][0] = 4 arr2[1][1] = 5 arr2[1][2] = 6 arr2 = 0x7ffc6bdc38a0
arr2[0] = 0x7ffc6bdc38a0
*arr2 = arr2[0] = 0x7ffc6bdc38a0
arr2[0][0] = 0x7ffc6bdc38a0
**arr2 = *arr2[0] = arr2[0][0] = 0x7ffc6bdc38a0 address of this two-dimentional array:
arr2 = 0x7ffc6bdc38a0
arr2[0] = 0x7ffc6bdc38a0
arr2[0][0] = 0x7ffc6bdc38a0 arr2[0][1] = 0x7ffc6bdc38a4 arr2[0][2] = 0x7ffc6bdc38a8
arr2[1] = 0x7ffc6bdc38a0
arr2[1][0] = 0x7ffc6bdc38ac arr2[1][1] = 0x7ffc6bdc38b0 arr2[1][2] = 0x7ffc6bdc38b4
we can use the unexisted element, interesting!
*arr2 means arr2[0], the first row.
**arr2 means *arr2[0] means arr2[0][0], the first element of the first row.
arr2[1][0] = 4
arr2[0][3] = 4
*(*(arr2 + 1) + 0) = 4
*(*(arr2 + 0) + 3) = 4
*(arr2[0] + 1*3 + 0) = 4
*(*arr2 + 1*3 + 0) = 4
*(&arr2[0][0] + 1*3 + 0) = 4
*(&arr2[0][0] + 3) = 4
【426】C 传递数组给函数的更多相关文章
- ajax向后台传递数组参数并将后台响应的数据赋值给一个变量供其它插件使用
1.在js中封装ajax向后台传递数组参数函数 //combogrid * * @Description 封装ajax向后台传递数组参数并将后台响应的数据赋值给一个变量方便其他插件使用该数据函数 * ...
- c语言函数传递数组
1.传递数组,打印不出来 #include <stdio.h> void solve() { printf(]); } int main() { int i; ;i<n;i++) { ...
- C++ 数组作为函数参数时,传递数组大小的方法
废话不多说,先上错误示范: void fun(int arr[arr_num]) { // ... } int main() { // ... int *arr = new int[10]; fun( ...
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
- C语言中如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...
- C语言二维数组作为函数的参数
前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include < ...
- jquery ajax传递数组给php
写成:var data = {'item[]':item}; $.post(url,data,function(return_data) 写成item:item会导致数据缺失. 更多:http://w ...
- C语言数组作为函数参数
数组可以作为函数的参数使用,进行数据传送. 数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用:另一种是把数组名作为函数的形参和实参使用. 数组元素作函数实参 数组元素就是下标变量, ...
- jQuery数组处理函数
写在前面: jQuery的数组处理函数整理如下,如有补充和建议,欢迎评论交流~ 1.$.trim(value) 从value中删除任何前导或尾随的空白字符 2.$.each(containe ...
随机推荐
- Linux本地内核提权CVE-2019-13272
简介:当调用PTRACE_TRACEME时,ptrace_link函数将获得对父进程凭据的RCU引用,然后将该指针指向get_cred函数.但是,对象struct cred的生存周期规则不允许无条件地 ...
- Oracle plsql存储过程中out模式参数的用法
在plsql中,存储过程中的out模式的参数可以用来返回数据,相当于函数的返回值.下面是一个小例子. 沿用上一篇的emp表结构和数据. 存储过程如下: create or replace proced ...
- java对接微信小程序
https://www.cnblogs.com/lyn20141231/p/11210372.html https://blog.csdn.net/sinat_29039125/article/det ...
- learning java swing 基本组件用法
import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event ...
- Intel 80286 CPU
一.80286概述 INTEL 1982年推出80286芯片,该芯片相比8086和8088有了飞跃式发展,虽然它仍是16位结构,但在CPU内部含有13.4万个晶体管,时钟频率由最初6MHz逐步提高到2 ...
- 洛谷 P1102 A-B数对 题解
P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...
- Code Chef October Challenge 2019题解
传送门 \(MSV\) 设个阈值搞一搞就行了 //quming #include<bits/stdc++.h> #define R register #define pb emplace_ ...
- python3 枚举定义和使用
定义 在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有 4 个对象:再比如行星类,目前只有 8 个对象.这种实例有限且固定的类,在 Python 中被称为枚举类.程序有两种方式来定义枚举类 ...
- [WEB安全]伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP
0x01 简介 一个用于伪造ip地址进行爆破的BurpSuite插件,burpsuite伪造ip可用于突破waf及进行安全规则绕过等场景. 0x02 功能 伪造指定ip 伪造本地ip 伪造随机ip 随 ...
- js中的那些遍历
说到遍历,首先想到的是数组的遍历,方法不要太多,比如 for, forEach,map,filter,every,some等 下面来看下,用法 首先 定义一个数组: 1. for循环,需要知道数组的长 ...