C语言程序设计整理(3)

函数设计的重要性

  1. 整个程序的运行,是由若干个函数串联起来的。
  2. main()函数是程序的入口
  3. 函数的三要素:函数的声明(可缺省),函数的定义,函数的调用

    • 函数的声明:用于告诉编译器存在此函数(形参名可以省略,例只写int)
int my_max(int,int);
  • 函数的定义(实现):即函数具体做了什么。
int my_max(int x1,int x2)
{
    if(x1>x2)
    {
        return x1;
    }
    else
    {
        return x2;
    }
}
  • 函数的调用:执行一遍函数中的代码,函数应当先声明再调用,另定义放在前面可视为隐式声明。
    函数在调用时,实参将值传递给形参,即形参的处置是实参

    - 函数的形式参数:在函数定义中,相当于函数内部的局部变量。
    - 函数的实际参数:在函数调用中
    

void表示函数没有返回值;有返回值的函数,在函数内每一个分支都必须有return。

一个函数可以接收多个参数,只能有一个返回值
(最多接收四个实参,与汇编效率有关)
(swift可以有多个返回值)

形参不能改变实参,但是如果实参传入的是地址,形参用指针接收地址,可以改变实参

void func(int *a)
{
    (*a)++;
}
int main()
{
int b=10;
func(&b);
printf("b=%d\n",b);
return 0;
}

如果同一个函数被调用两次,两次之间没有关系。

使用指针可以跨函数访问变量

函数如果想改变实参的值,实参传地址(形参使用指针接收)–这种参数被称作出参
函数如果不改变实参的值,直接传入实参即可–这种参数被称作入参

形参不能为数组,必须为一确定的值
void print_arry(int arr[10]);
形参看似是数组,但实际上是指针变量
(指针变量的长度:sizeof()=机器字长,如64位为8字节)
(这一值与指向的具体类型无关)

arr[10]=arr[]
//[]内可写可不写,实际上与其内容无关。
实际上是 int *(arr)=int arr[]
输入的是地址

scanf("%d",arr+i);
scanf("%d",&arr[i]);
//两者实际上等价

位运算:二进制的运算

&,|,~,^,<<,>>

1.与运算&:对应位都是1才是1。

100&15
0xabcd&0xff

可以用来取到某位截至二位数值
2. 按位取反~:1为0,0为1

只保留后8位:0xabcd&0xff
只保留前8位:0xabcd&~0xff
~0 可以用来表示机器能取的最长整型数
3. 或运算|:有一个1就是1
0xa00|0xc0=0xac0
置位运算

100|16 将第五位置换成1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值