关闭

C语言小知识总结1

81人阅读 评论(0) 收藏 举报

函数的实参和形参之间是如何进行数据传递的?

当调用函数的时候,实参的值复制给了形参,形参的值参加运算。即这便是“单项传递”。

但是,如果采用数组名和指针作为函数参数的时候,情况就大不一样,因为数组名或者指针作为函数参数的时候并不是传递 的数据的值,而是地址!!!即,这个便是双向传递了~~


c语言:调用函数,交换两个变量的值。

//程序1,使用整型参数: #include <stdio.h> void swap(int x , int y) { int temp; temp=x; x=y; y=temp; //交换形参x,y的值 } void main() { int a,b; printf(“请输入两个整数a和b:”); scanf("%d%d",&a,&b); printf("调用函数...
这个无法交换数据。
C语言函数参数的基本规则是值传递,所以传递时只能实现实参向形参的单向的、值的传递。这就是为什么需要使用指针才能实现值交换的原因。
类似这种,这种参数传递关系称为“传值调用”

当一数组作为函数参数调用一个函数的时候,传递到函数中的是该数组的内存地址的首地址,即传地址调用,这个是有很大区别的~~~



求大神帮忙 int i= *(int *)&x这行代码是什么意思
float x=1.1f;
int i= *(int *)&x;  //这行代码是什么意思

int i= *(int *)&x; 将变量x的地址强制转换为“指向整型的指针”,然后对其进行间接访问。



如果希望在函数撤退后,其中的某些变量的值仍然被保留,以备以后的函数继续调用继续使用,则应变量定义为“”static“”存储类别,即“”静态存储类别“”

而“”动态存储类别“”每次调用的时候,都需要重新定义变量,重新为其分配内存


函数不可以嵌套定义,可以嵌套调用~~


C语言有三种预处理命令:

(1)宏

(2)文件包含

(3)条件编译



条件编译的三种格式:

(1)标识符#ifdef

          程序段一

#else 程序段2

#endif

如果定义的标识符为名称的宏,则编译程序段一,否则编译程序段2.

(2 )#ifndef 标识符

程度段一

#else 程序段二

#endif


(3)#if 表达式程序段一

#else 程序段2

#endif

如果表达式为真,则编译程序段一,否则编译程序段2。



与结构体不同的是,共用体中的各数据成员共用相同的一片内存区,一个共用体变量所需要的内存空间取决于数据成员中占用内存空间最多的那一个数据成员。意思就是说结构体中任何一个成员变量的改变会影响到其他数据 的改变。所以共用体我觉得没有任何意义


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:354次
    • 积分:38
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档