黑马程序员——函数、数组、指针、数据类型使用注意

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net
培训</a>、期待与您交流! -------

一、函数

函数主要包括函数的定义、函数返回值、函数的调用、函数的声明、函数的参数、.h文件和.c文件的分工等内容。


函数使用注意:
1、函数不能重复定义,但是可以重复声明。
2、函数不能存在嵌套定义。
3、在默认的情况下,不允许有函数的名称一样。
4、如果有函数的声明,没有函数的定义,则编译可以通过,因为编译器只会检测语法是否合理,并不会检测函数是否定义,但链接会报错,因为链接的时候会检测函数是否定义。


二、数组
数组主要包括一维数组和二维数组。
使用注意:
1、只能在定义数组的同时进行初始化。
2、如果想在定义数组的同时进行初始化,数组元素个数必须是常量,或者不写。
数组和函数使用注意:
1、数组作为函数参数,可以省略元素个数。
2、数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组。


三、字符串
是由很多个字符组合在一起,使用时用(””)将其包含,其内部最后一个字符实际为 ’/0’
strlen函数:计算字符串长度
1、计算的是字符数,并不是字数。一个汉字算作3个字符
2、计算的字符不包括\0
3、从某个地址开始数字符的个数,直到遇到\0为止


四、char类型


字符型,使用时用’’将其标示。char类型数据在内存中储存的是该字符所对应ASCII码表中的数值,占据一个字节。


五、指针
主要为指针变量的定义、指针与数组、指针与字符串、返回指针的函数、指向函数的指针等。
使用注意:
1、int *p只能指向int类型的数据
2、指针变量只能存储地址
3、指针变量未经过初始化,不要拿来间接访问其他存储空间
4、定义变量时的*仅仅是一个象征,没有其他特殊含义
5、不正确的写法*p = &a
6、*p = 20; 这个时候的*的作用:访问指向变量p指向的存储空间指向指针的指针图解


指针和数组:
1、数组元素的访问方式
 int ages[5];
 int *p;
 p = ages;
1>>数组名[下标]  ages[i]
2>>指针变量名[下标]  p[i]
3>>*(p + i)
2、指针变量+1,地址值究竟加多少,取决于指针的类型
int *   4
char *  1
double * 8
3、利用一个指针来接收一个数组,指针变量array指向了数组的首元素
4、数组名就是数组的地址,也是数组首元素的地址指针和字符串定义字符串的2种方式


六、变量类型
根据变量作用域的不同分为局部变量和全局变量。


局部变量:
1、定义:在函数内部定义的变量,包括形参。
2、作用域:从定义变量的那一行开始,一直到代码块结束。
3、生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收。
4、没有固定的初始值。


全局变量:
1、定义:在函数外面定义的变量。
2、作用域:从定义变量的那一行开始,一直到文件结尾。
3、生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁。
4、默认的初始值就是0,根据变量的储存类型分为自动变量、静态变量、寄存器变量。


七、位运算


1、& 按位与:
只有对应的两个二进位均为1时,结果位才为1,否则为0。
2、| 按位或:
只要对应的二个二进位有一个为1时,结果位就为1,否则为0。
3、^ 按位异或:
当对应的二进位相异(不相同)时,结果为1,否则为0。
4、~ 取反:
对整数a的各二进位进行取反,符号位也取反(0变1,1变0)
5、<< 左移:
把整数a的各二进位全部左移n位,高位丢弃,低位补0。左移n位其实就是乘以2的n次方。
6、>> 右移:
把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值