c语言题目 c语言程序中,当调用函数时,()哪个正确?
A、实参和形参各占一个独立的存储单元 B、实参和形参可以共用存储单元
C、可以由用户指定是否共用存储单元 D、由计算机系统自动确定是否共用存储单元 展开
c语言程序中,当调用函数时,实参和形参各占一个独立的存储单元。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
扩展资料:
C语言初学者比较喜欢的Turbo C 2.0提供了400多个运行时函数,每个函数都完成特定的功能,用户可随意调用。这些函数总体分成输入输出函数、数学函数、字符串和内存函数、与BIOS和DOS有关的函数、 字符屏幕和图形功能函数、过程控制函数、目录函数等。
Windows系统所提供的Windows SDK中包含了数千个跟Windows应用程序开发相关的函数。其他操作系统,如Linux,也同样提供了大量的函数让应用程序开发人员调用。
作为程序员应尽量熟悉目标平台库函数其功能。这样才能游刃有余地开发特定平台的应用程序。比如作为Windows应用程序的开发者,应尽量熟悉Windows SDK;作为Linux应用程序开发者,应尽量熟悉Linux系统调用和POSIX函数规范。
因此,C语言环境下,改变形参本身的值对实参完全不起作用
我的疑问是如果传递是数组名呢,传递地址不是共用存储单元吗?
不是,如果形参是指针,实参是数组名,它仍然是把数组的首地址复制到指针变量中作为值使用的
比如说你定义了char a[]="abc";
并定义了函数 void fun(char *p);
那么你执行fun(a)时,p和a这两者所在的存储单元是不一样的,只是值都是"abc"中字符'a'的内存地址
如果在fun函数中使用char c='\n'; p=&c;的话,此时p的值已发生改变,变成了字符变量c的内存地址,但实参a的值仍然不改变,仍是"abc"中字符'a'的内存地址
如果传递的是数组名呢?那不是分配不同的存储单元吗?
实参为原数组(特殊的指针),形参是一个指针(一般指针),所以还是不同的存储单元
而数组内容不会传递,这个指针只是访问原数组地址处存储的数组而已
另外:形参以数组形式定义出来都是指针类型,不会是数组,可在函数中sizeof验证
会改变原数组的值是因为指针的性质,而不是共用存储空间