C语言易漏易混总结
C语言是万码之本
1.struct student* s=( struct student* ) malloc(sizeof(struct student) ) ;
这段代码是动态分配内存的语句,可以理解为:
struct student* s
:定义一个名为s
的指针变量,其指向类型为struct student
的结构体。malloc(sizeof(struct student))
:调用malloc
函数,分配struct student
类型的内存块,并返回指向该内存块的指针,sizeof(struct student)
表示结构体struct student
的大小。(struct student*)
:将malloc
函数返回的指针强制转换为struct student*
类型,与s
指针变量类型相同。
所以,整句话的意思是:为类型为 struct student
的结构体动态分配内存,并将指向该内存块的指针赋值给 s
指针变量。
2.判断一个数是否为素数时,需要进行质因数分解。而质因数的范围一般是在2到该数的平方根之间。因此,如果一个数不是素数,那么它的质因数一定是小于或等于它的平方根的。
举个例子,如果要判断一个数n是否为素数,假设它有一个大于1且小于等于n的因数x,那么必然有另外一个因数y,使得x * y = n。如果x和y都大于平方根n,那么它们的乘积就会大于n,与假设矛盾。因此,判断素数时只需要从2到平方根n的范围内进行判断,如果没有找到任何一个因数,那么这个数就是素数。
因此,开方操作可以帮助我们缩小搜索范围,提高判断素数的效率。
1 | int k = (int)sqrt((double)m); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 FadeAway Space!
评论