C语言2
二、
若p的值是垃圾值则*p所代表的内存单元的控制权没有分配给该程序int *p;*p=10;//error
通过被调函数修改主调函数普通变量的值:
int a[3];a是数组名,是个指针常量,存放的是数组中第一个元素的地址。如果p是个指针变量则p[i]永远等价于*(p+i),数组中的元素是连续存放的;确定一个维数组需要知道第一个元素的地址和数组的长度;只有两个指针变量指向的是同一块区间的不同单元可以相减值为相隔的单元;一个指针变量所占的字节为4个字节
字符串是以‘0\’结束
三、
int len=4;int a[len]={1,2};//error
int len=3;int a[3]={2,4};//ok
动态内存是在堆分配的,静态内存是在栈分配的;struct name{};枚举就是把一个事物的所有可能值一一列举出来
原码:符号-绝对值码,最高位0表示正,1表示负。负整数转二进制:求正数,取反,末尾加1。二进制转十进制:首位是1,取反,末位加1。二进制全部为零的含义:数值为0、字符串结束标记符’\0’、空指针NULL.我们计算机规定了,以零为编号的存储单元的内容不可读不可写
四、
位运算符可以对数据的操作精确到每一位
&---按位与,1and1=1,other 0
|---按位或,0and0=0,other 1
~---按位取反
^---按位异或,相同为0,AandA=0,AandB=1
<<---按位左移,左移n位相当于乘以2的n次方,i<<3的执行速度比i*8快
>>---按位右移,右移n们相当于除以2的n次方,前提是数据不能丢失
五、
- 分配内存:操作系统把某一块内存空间的使用权分配给该程序。
- 释放内存:操作系统把分配给该程序的内存空间使用权收回,并不是把该内存的内容清零
变量不初始化,则变量通常是垃圾值
系统是如何执行int i=4;这个语句的
- 软件请求操作系统为i分配存储空间
- 操作系统会在内存中寻找一块空闲的区域,把该区域当作i来使用
- 软件会把i和这块区域关联起来,今后对字母i的操作就是对这块区域操作
- 把5存储到字母i所关联的内存区域中
- 内存区域就是内存的一块存储单元

浙公网安备 33010602011771号