C语言——数组、函数、预处理

%p —— 函数、指针的地址。

数组

int a[4] = {2,5}; //a[2],a[3]值为0


定义或声明时,[]里面可以是常量,绝对不能是变量。



计算数组中元素的个数:int a[]={123,321,2123,4,12};
                                             int count = sizeof(a)/sizeof(int);

     字符串初始化:1. char a[3] = {'w','w','\0'};
                                2. char a[3] = "ww";或 char a[] = "ww";
                                3. char *d = "ww";
                                4. char b[3];     b[0]='w'; b[1]='w'; b[2]='\0';
                          
     strlen():计算字符串的字符个数(不包括‘\0’)。引用<string.h>头文件。
     strlen()与sizeof():strlen()求字符个数,
                                 sizeof()求整体所占空间(包括'\0’,指针的话是指指针变量的大小)
                                 字符串指针用sizeof()返回指针变量大小,4字节(32位),8字节(64位)。字符串数组返回元素个数。
                                 字符串指针用strlen()返回字符个数。
          

函数
     每个函数都应该独立定义,不能嵌套定义。
     常用函数:rand():产生一个(0~RAND_MAX)之间的随机数,包含<stdlib.h>
     嵌套调用:A函数调用B函数。
     递归调用:当前函数调用自己。使用return关键字跳出递归。
     C语言中,只有后面定义的函数才能调用前面定义过的函数。

     预处理指令:以#开头,结尾不用分号。
                          主要有:宏定义、文件包含、条件编译。
     宏定义:1. 不带参数的宏定义:#define 宏名 宏内容
                        终止宏定义的作用域 #undef 宏名
                    2. 带参数的宏定义:#define 宏名(参数列表)  字符串
                                    #define  average(a,b)  (a+b)/2
                    3. 宏定义与函数的区别:
                                    宏定义不涉及参数类型匹配、参数传递、返回值问题。
                                    函数调用在程序运行时执行,而宏替换只在编译预处理阶段进行,
                                    所以带参数的宏比函数运行效率更高。
     文件包含:#include的本质是将文件的内容拷贝到当前文件。
                       (#include "sum.txt"、#include "sum.c"也可,只是单纯的拷贝)
                       #include <xx.h>直接在系统目录下查找文件,库文件使用这种方式。
                       #include "xx.h"现在当前编译目录下查找,没有再到系统目录下查找。

include 最好包含的是头文件(里面是声明),若是包含.c文件,在连接时容易出现重复定义。
     即拷贝过来(include)的生成的目标文件和那个.c文件生成的目标文件连接时会重复定义。
 
     条件编译:#if define()和#if !define()。
                       #ifdef和#ifndef


同时编译多个文件指令: cc -c one.c two.c ...
链接多个目标文件: cc -o a.out one.o two.o …
多个文件编译链接:cc one.c two.c…       //默认生成a.out可执行文件

若宏MAX不等于10,代码中的乱码不会被编译,不会出错。


注意下图条件预处理后面可跟真假值。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值