课堂笔记
- 生成随机数函数:rand(void),返回值为0~32767,头文件是<stdlib.h>;
- rand()函数的初始值由函数srand(unsigned int seed)决定,此函数无返回值,就可改变rand()的初始值;
- time_t time(time_t*time)函数可以实时获取此时与1970年1月1日0时0分0秒之间的时间差(单位:秒),返回值是int或者long long类型,可以传灿空指针(NULL);
- 把time(NULL)函数的返回值先强制类型转换成unsigned然后传参给srand()去随机初始化rand()函数的初始值,这样形成的随机值才是真的随机值;
- 数组创建时必须初始化,数组初始化要么指定数组元素个数[10],要么存入若干个元素{1,2,3,4);
- 数组本质上是一种自定义类型,类型由数组元素类型和元素个数决定,例:int arr[10]的类型是int [10];
- 数组元素在内存中的存储是连续存储的,且是随着下标增长由低地址到高地址存储的;
- 求数组元素个数的方法:sizeof(arr)/sizeof(arr[0]);
- sizeof的几种写法:sizeof(int),siofze(a),sizeof(arr),sizeof a,sizeof arr,此函数的返回值是size_t类型,此类型是unsigned int类型或者unsigned long long类型;
- 字符串数组的长度不含’\0’,用strlen()函数求,但是sizeof()函数求出来的字符串数组元素个数含’\0’;
- 变长数组:元素个数可以用变量,但是元素值不能初始化;
- Sleep()函数:休眠函数,传参毫秒,system(“cls”):清屏函数,以上函数头文件:<windows.h>;
课后总结:
- sizeof()和strlen()的区别:
- Sizeof()是计算符,strlen()是函数,头文件是<string.h>;
- Sizeof可以用变量,数组,类型做参数,strlen只能用char*做参数;
- 数组做sizeof参数不退化,而传递给strlen则退化成指针;
- Strlen结果是运行时候才能计算出来,而且计算出来的是字符串的长度不是内村的大小;
- 当使用的是结构体或者变量时,sizeof返回的是实际的大小,静态空间数组则返回数组的尺寸;
- sizeof不能返回动态分配的数组或者外部数组的尺寸
- strlen()计算的是数组的长度,遇到’\0’就结束计算,不包括’\0’,sizeof()计算的是变量或者数组占的内存,其中计算数组时,由每个元素的占用内存乘以元素个数,包括’\0’,
- 例1:
char str[] = “hello\n\0\n”
,则strlen(str)值是6. 因为strlen遇见\0结束符则结束所以值是6,sizeof(str)值是9;
例2:
char str1[]= “Hello” ;
char str2[5] = {'H','e','l','l','o'};
char str3[6] = {'H','e','l','l','o','/0'};
char *p1 = "Hello";
char *p2[]={"hello","world"};
int n = 10;
int *q = &n;
- sizeof (str1 ) = 6 (自动加了’/0’);
- strlen (str1 ) = 5 (字符串的长度);
- sizeof (str2 ) = 5 (字符数组的大小);
- strlen (str2) = 未知 (该字符串缺少结束符’/0’);
- sizeof (str3) = 6 (字符数组的大小);
- strlen (str3) = 5 (该字符串的长度为5);
- sizeof ( p1 ) = 4 (p1是一个指针,大小为4);
- sizeof ( p2 ) = 8 (p2是长度为2的字符串数组);
- sizeof ( n ) = 4 (整型大小为4);
- sizeof ( q ) = 4 (q是一个指针,大小为4);