初学C语言(4)

1.在 代码中 所有的计算 计算机都是将整数转换为2进制后 才进行计算的
2.计算数字二进制中1的个数:可以计算负数
算法:while(n!=0)
{
n=n&(n-1);
m++;
}
3.斐波那契 :
1 1 2 3 5 8 13 21
F1=1 f2=1 f3=1
F3=f1+f2;
f1=f2;
F2=f3;
第一项第二项已知 从第三项开始算

4.Break :结束所有循环
5.数组:
数组a[10];
Int b[10]=a; a 代表 a数组 首元素的首地址
数组初始化只有一次机会 定义时 同时初始化数组
Int a[10]; 数组初始值为随机的
数组存放在那?
栈内
数组什么时间确定大小?
编译时
数组什么时候分配内存?
运行时 所有的变量都在运行是分配内存 大小为栈的大小
6.数组越界的原理是什么?
栈 每两个变量有两个int 类 的变量为哨兵位 当程序访问到哨兵位 程序出错
7.Sizeof(a) 代表整个数组的字节数
所以一般 sizeof(a)/sizeof(0); //求数组大小
8.Int a[10];
Int* p=a;
a[2]与p[2]和*(p+2)等价 p向后移动两个变量 [] 自带解引用
Int* p ;不初始化 则为野指针; int* p=NULL: //0号地址 不能被访问

数组:int a[10];
1.&a+1 //表示直接加一个a[10];
2.sizeof(a)//表示整个数组的字节大小 //求长度 整个数组的字节大小 /字大小
3.数组内的地址都是连续的
4.字符数组
Char a[10];
\0; 字符结束符 代表字符串结尾
在 char类中sizeof(a)//表示整个数组的字节大小 包括\0
0x00 0 ‘\0’ 都代表0;
Char a[5]=”abce”// 字符数组 长度5 只能赋值4个 默认在结尾加\0
6.数组的整体赋值只有一次机会 就是在初始化的时候
字符串:char *p=”hdhdhdh”;结尾默认有一个\0
*(p+1)=‘d’; //出错 因为 字符串在 rodata (readonly) 段中 只读 不可改//两个指针指向字符串;若两个字符串相等时;两个指针指向的地址是同一个:
输入 %s 遇到\0停止
7.Strlen :计算字符串长度不包括\0 遇到/0停止计算
Char a[]=”adc”
Sizeof(a);
//为 4个

猜你喜欢

转载自blog.csdn.net/qq_41257782/article/details/83348336
今日推荐