C语言函数传递数组和传递地址的区别你知道吗

目录
  • 传递数值
  • 传递地址
  • 注:
  • 总结

传递数值

code:

#include <stdio.h>
void deliveryData(int data)
{
	data = data + 100;
	printf("deliveryData:data=%d\n", data);
}
int main(void)
{
	int data=10;
	deliveryData(data);
	printf("main:data=%d\n", data);
	return 0;
}

运行结果:

C:\Users\Administrator\Desktop\C_Study\新版本c语言\程序\unit5_function>a.exe
deliveryData:data=110
main:data=10

传递地址

code:

#include <stdio.h>
void deliveryData(int data[])//这里int data[]是地址(相当于指针)
{
	data[0] = data[0] + 100;
	printf("deliveryData:data=%d\n", data[0]);
}
int main(void)
{
	int data[2]={1, 2};
	deliveryData(data);//这里传递的是地址
	printf("main:data=%d\n", data[0]);
	return 0;
}

运行结果:

C:\Users\Administrator\Desktop\C_Study\新版本c语言\程序\unit5_function>a.exe
deliveryData:data=101
main:data=101

注:

传递数值,操作的是不同的内存空间传递地址,操作的是同个内存空间

总结

本篇文章就到这里了,希望能够给你带来帮助也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C语言中二维数组作为函数参数来传递的三种方法

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char str[ ][5] ) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]); } void main() { char* p[3]; char str[][5] = {"abc&quo

  • C++小知识:C/C++中不要按值传递数组

    错误的代码: ID_INLINE mat3_t::mat3_t( float src[ 3 ][ 3 ] ) { memcpy( mat, src, sizeof( src ) ); } 说明: 有时候程序员会忘记 C/C++ 里数组不能按值传递给函数.当你试图这样做时,是数组的指针(第一个元素的地址)而不是整个数组被传递.我们还应该记住,方括号中的数字没有任何意义.它们仅仅是程序员所做的标志,记录了传递数组的『假定』大小.事实上,你也可以传递一个大小完全不同的数组.例如,下面的代码就会成功编译

  • 如何将php数组或者对象传递给javascript

    在网上搜了一些方法,最后自己采用的是通过json字串的方式. 假设有一个php 数组 $arr,代码如下: 复制代码 代码如下: <script> // html5中默认的script是javascript,故不需要特别指定script language var arr_js = <?php echo json_encode($arr)?>; </script>

  • python调用c++传递数组的实例

    如下所示: INPUT = c_int * 4 # 实例化一个长度为2的整型数组 input = INPUT() # 为数组赋值(input这个数组是不支持迭代的) input[0] = 11 input[1] = 2 input[2] = 3 input[3] = 4 dll.teststring.restype = c_char_p # bytes(aaaa, encoding="utf-8") a = dll.teststring(input,4) MYLIBDLL char*

  • js传递数组参数到后台controller的方法

    传递参数传递字符串,所以要把数组转换为字符串, var arr=[1,23,34,5]; var str = arr.toString(); str传递到后台,str.split(" , ");将字符串拆分得到元素. var arr=[1,23,34,5]; var str = arr.toString(); document.write(str); var getArr = str.split(","); for(var i=0;i<getArr.lengt

  • C++ 二维数组参数传递的实现方法

    C++ 二维数组参数传递的实现方法 int a[2][2]={ {4, 6}, {9, 11} }; 我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做? 第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器无法分配这样的数组,所以要这样传int a[][3] 第二种方法是传递指针数组方式,即int (*a)[3] 第三种是传递指针方法. 具体实施见代码: 方法1:传递数组,注意第二维必须标明 //二

  • C语言函数指针数组实现计算器功能

    目录 一.概念 二.用途 三.案例:计算器 (1)基础代码编译: (2)使用函数指针数组的实现: 一.概念 数组:一个存放相同类型数据的存储空间. int arr[10]; //数组arr的每个元素是int 指针数组:一个存放指针的数组. int* arr[10]; //数组arr的每个元素是int* 函数指针:一个指向函数的指针,一般用函数名表示. int Add(int x, int y) { return x + y; } int main() { int arr[10] = { 1, 2

  • C语言 指针与数组的详解及区别

    C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[10]; 指针数组简言之就是存放指针的数组: --数组并非指针&&指针并非数组 (1)定义一个外部变量: eg:int value=10; int *p=&value; 举例:当需要在一个函数中用这个变量时:externa int*p;而非extern int p[]; 分析:当用:e

  • C语言函数传递数组和传递地址的区别你知道吗

    目录 传递数值 传递地址 注: 总结 传递数值 code: #include <stdio.h> void deliveryData(int data) { data = data + 100; printf("deliveryData:data=%d\n", data); } int main(void) { int data=10; deliveryData(data); printf("main:data=%d\n", data); return

  • C语言函数封装及变量的作用域

    目录 1. for循环示例 2. 模拟实现投票系统.switch 3. 计算字符串空格.数字等数据数量 4. 字符串转整数. 5. 整数转字符串 6. 浮点数转字符串 7. 字符串转浮点数 8. 函数的特性与用法 9. 判断平年和闰年 10. 将数组当做函数的形参 11. 计算字符串长度 12. 全局变量.静态变量.局部变量.常量 13. 字符串进阶练习作业 1. for循环示例 #include <stdio.h> int main() { int i,j; int len=4; for(i

  • 使用Python向C语言的链接库传递数组、结构体、指针类型的数据

    使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来调用C语言的代码库. 至于如何调用基础数据类型的数据,请大家参考我的另外一篇文章:Python使用ctypes调用C/C++的方法 1. 使用python给C语言函数传递数组类型的参数 想必很多时候,C语言会使用数组作为参数,在之前我们使用过ctypes的一些数据类型作为C语言参数类型,包括byte

  • javascript数组与php数组的地址传递及值传递用法实例

    本文实例讲述了javascript数组与php数组的地址传递及值传递用法.分享给大家供大家参考.具体如下: javascript数组为地址传递/引用传递,而php数组为值传递 实例代码如下: 复制代码 代码如下: <?php $arr = array(3,9,4); function test($arr){  $arr[0] = 30; } test($arr); foreach($arr as $val){  echo $val." "; } ?> <script

  • 详解C语言中的函数、数组与指针

    1.函数:当程序很小的时候,我们可以使用一个main函数就能搞定,但当程序变大的时候,就超出了人的大脑承受范围,逻辑不清了,这时候就需要把一个大程序分成许多小的模块来组织,于是就出现了函数概念:   函数是C语言代码的基本组成部分,它是一个小的模块,整个程序由很多个功能独立的模块(函数)组成.这就是程序设计的基本分化方法: (1) 写一个函数的关键: 函数定义:函数的定义是这个函数的实现,函数定义中包含了函数体,函数体中的代码段决定了这个函数的功能: 函数声明:函数声明也称函数原型声明,函数的原

  • 深入理解python中函数传递参数是值传递还是引用传递

    目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用"的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能 直接修改原始对象--相当于通过"传值"来传递对象. 你可以在很多讨论该问题

  • PHP数组传递是值传递而非引用传递概念纠正

    在调用函数时通过将PHP数组作为实参赋给形参,在函数中修改,并不会影响到数组本身. 说明此过程中的传递为值传递,数组变量并非是指向此数组本身的引用,PHP数组本身以值的形式存在,同时形参是对数组的拷贝. 这点与其他一些语言不同(如c.Js等)很不相同,值得注意! 复制代码 代码如下: $arr = array( 'name' => 'corn', 'age' => '24', ); test_arr($arr); function test_arr($arr){ $arr['name'] =

  • 探讨Java中函数是值传递还是引用传递问题

    相信有些同学跟我一样,曾经对这个问题很疑惑.在网上也看了一些别人说的观点,评论不一.有说有值传递和引用传递两种,也有说只有值传递的,这里只说下个人见解 先给大家介绍下概念 值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值. 引用传递:(形式参数类型是引用数据类型参数):也称为传地址.方法调用时,实际参数是对象(或数组),这时实际参数与

随机推荐