C语言学习笔记(三)函数和内存

一、函数相关

/*
 参数注意点
 1.形式参数:定义函数时函数名后面中的参数,简称形参
 2.实际参数:调用函数式传入的具体数据,简称实参
 3.实参个数必须等于形参个数
 4.函数体内部不能定义和形参一样的变量
 5.如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值
 6.一个函数可以没有形参,也可以有无限多个形参
 */

// 形式参数,简称形参
int sum(int num1, int num2)
{
    // 函数体内部不能定义和形参一样的变量
    // int num1;

    num1 = 50;

    return num1 + num2;
}

/*
 return的作用:
 1> 退出函数
 2> 返回一个具体值给函数调用者
 
 返回值注意点
 1> void代表没有返回值
 2> 如果没有明确说明返回值类型,默认是返回int类型
 3> 就算明确声明了返回值类型,也可以不返回任何值
 
 默认情况下,C语言不允许两个函数的名称一样
 */

 

二、显示mac隐藏文件


显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO输完单击Enter键,退出终端,

重新启动Finder就可以了重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->重新启动

 

三、printf函数注意点

    // \n是一个转义字符
    // \t tab键
    // \" 一个双引号
    // printf函数返回的字符串常量的字符数,并不是字数
    // 1个汉字占据3个字符
    int e = printf("哈h\"\ta\n");
   
    printf("e=%d\n", e);
   
    return 0;
}

/*
1.函数的定义放.c文件,函数的声明放.h文件
2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件
3..h文件的作用:被别人拷贝。编译链接的时候不需要管.h文件
4.cc xx.o xxx.o 将多个目标文件链接在一起
  cc xx.c xxx.c 将多个源文件编译、链接
*/

 

四、内存

1.类型说明符

 

#include <stdio.h>
/*
 int 4个字节  %d
 short 2个字节 %d
 long 8个字节  %ld
 long long 8个字节 %lld
 
 
 signed
 unsigned  %u
 */
int main()
{
    // 0000 0000 0000 0000 0000 0000 0000 0000
    // 2的31次方-1
    // 2的32次方-1
    int num;
    
    /*
     signed和unsigned的区别:
      signed 最高位要当做符号位
     unsigned 最高位不要当做符号位
    */
    // signed == signed int
    // signed 有符号:正数、0、负数
    signed int a = 10;
    signed a2 = 10;
    
    // unsigned int == unsigned
    // unsigned 无符号:0、正数
    unsigned int b = 10;
    unsigned b2 = 10;
    
    long unsigned int c = 34343;
    long unsigned c2 = 423432;
    
    short unsigned int d = 4343;
    short unsigned d2 = 43243;
    
    short signed int e = 54354;
    short signed e2 = 434;
    
    
    
    
    return 0;
}

void longAndShort()
{
    // long == long int
    long int a = 100645654654645645l;
    long a2 = 100645654654645645l;
    
    // long long int == long long
    long long int c = 100645654654645645ll;
    long long c2 = 4535435435435ll;
    
    // short == short int
    short int d = 5454;
    short d2 = 43434;
    
    //printf("%lld\n", c);
    
    int s = sizeof(long long int);
    printf("%d\n", s);
}


2.位运算

 

#include <stdio.h>


int main()
{
    /* 按位与 &
     
     10101010000
     00000100000
     -------------
     00000000000
     
     10111011
     10101101
     ---------
     10101001
     
     1001
     0101
     -----
     0001
     */
    
    /*
     按位或 |
     1001
     0101
     -----
     1101
     */
    
    
    /*
     按位异或 ^ 
     1.相同数值进行异或,结果肯定是0,比如9^9
     2.交换 9^5^6 == 9^6^5
     3.任何数值跟0进行异或,结果还是原来的数值,9^0 == 9
     4.a^b^a == a^a^b == 0^b == b
     
     1001
     0101
     -----
     1100
     
     1001
     1001
     -----
     00000
     
     0101
     0000
     ----
     0101
     
     9^5^9 == 9^9^5 = 0^5 = 5
     
     a^b^a == b
     */
    //printf("%d\n", 9^9);
    
    //printf("%d\n", 9 ^ 5);
    
    /*
     按位取反 ~
     ~0000 0000 0000 0000 0000 0000 0000 1001
      1111 1111 1111 1111 1111 1111 1111 0110
     */
    //printf("%d\n", ~9);
    
    /*
     左移 <<
     
     0000 0000 0000 0000 0000 0000 0000 0000
     00 0000 0000 0000 0000 0000 0000 100100
     
     9<<1 -> 9 * 2的1次方 == 18
     9<<2 -> 9 * 2的2次方 ==36
     9<<n -> 9 * 2的n次方
     */
    
    //printf("%d\n", 9<<1);
    
    /*
     右移 >>
     0000 0000 0000 0000 0000 0000 0000 0000
     000000 0000 0000 0000 0000 0000 0000 10
     111111 1111 1111 1111 1111 1111 1111 10 
     
     8>>1 -> 8/2 == 4
     8>>2 -> 8/2的2次方 == 2
     8>>n -> 8/2的n次方
     */
    
    printf("%d\n", 8>>3);
    
    return 0;
}


3.交换两个变量的值 3种方法

#include <stdio.h>

/*
 使用位异或运算符交换两个变量的值
 */

int main()
{
    int a = 10;
    int b = 11;
    
    /* 借助第三方变量
    int temp = a;
    a = b;
    b = temp;
    */
    
    /*
    a = b - a;
    b = b - a;
    a = b + a;
    */
    
    // a^b^a == b
    
    // a -->  10^11
    // b -->  10
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    
    printf("a=%d, b=%d\n", a, b);
    
    return 0;
}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值