C语言的一些东西

1:C语言中的ceil(),floor(),round():


ceil()

Prototype: double ceil(double x);
Header File: math.h (C) or cmath (C++)
Explanation: Use this to round a number up. It returns the smallest integergreater than or equal to x.
ANSI: C and C++

#include <cmath>
#include <iostream>
int main()
{
  cout<<ceil(2.0/4.0);
  double x=.4;
  cout<<ceil(x);
} 

floor()

Prototype: double floor(double Value);
Header File: cmath
Explanation: Returns the largest interger value smaller than or equal to Value. (Rounds down)

#include <cmath>
#include <iostream>

using namespace std;

int main()
{
  cout<<"5.9 rounded down: "<<floor(5.9);
}

round()

double round(double value)

The round functions return the integral value nearest to x rounding half-way cases away from zero, regardless of the current rounding direction.


rand()与srand()


rand()

Prototype: int rand();
Header File: stdlib.h (C) or cstdlib (C++)

Explanation: rand returns a value between(inclusive) 0 and and RAND_MAX (defined by the compiler, often 32767). To get a more mangeale number, simply use the % operator, which returns the remainder of division.

srand()

use the spacified "seed" to act as the seed, then the rand can generate the numbers under this condition


在一些产品的源代码中,经常会发现有这样的语句,

srand(unsigned(time(NULL)));

为什么要这样做呢,其实很简单。

1.  time()函数表示返回1970-1-1 00:00:00 到当前时间的秒数,而time(NULL)表示获取一个时间,准确的说,获取一个指针的地址。

2.  srand()函数是产生随机数种子的。在产生随机数 rand()被调用的时候,他会查看:如果用户之前调用过 srand(seed)的话,他会重新调用一遍 srand(seed)以产生随机数种子;如果发现没有调用过 srand(seed)的话,会自动调用 srand(1)一次。所以,如果希望rand()每次调用产生的值都不一样,就需要每次调用srand(seed)一次,而且seed不能相同。

综合上述两点,那就很明了了。

srand(unsigned(time(NULL)))表示产生随机数种子以保证rand()调用的时候不会出现重复的随机值。

srand()、time(NULL)用法解析



### C语言中指针的概念解析 指针是C语言中一个核心且强大的特性,它允许直接访问和操作内存地址。理解指针是掌握C语言的关键,因为它们提供了对底层硬件的控制能力,同时也能够提高程序的效率和灵活性。 在C语言中,指针本质上是一个变量,其值为另一个变量的地址,即内存位置。每个指针都必须与一个特定的数据类型相关联,这决定了指针所指向的数据在内存中的大小和解释方式。例如,一个`int`类型的指针通常指向一个整数占用的内存空间。 指针的主要优势在于它们可以用来表示复杂的数据结构,如链表、树等,这些结构对于实现高效的算法至关重要。此外,指针使得数组和字符串的操作更加便捷,因为可以通过指针遍历这些结构而无需复制大量数据[^1]。指针还允许像汇编语言一样处理内存地址,从而编写出更紧凑、更高效的程序[^2]。 然而,指针的使用也伴随着一定的风险。不当的指针操作可能导致程序崩溃或产生难以调试的错误。比如,访问未初始化的指针、访问已经释放的内存或者越界访问数组等行为都是常见的错误。因此,在使用指针时需要格外小心,并遵循良好的编程实践来确保代码的安全性和稳定性[^3]。 为了更好地理解指针的工作原理,下面是一个简单的示例,演示了如何声明和使用指针: ```c #include <stdio.h> int main() { int var = 10; // 声明一个整型变量 int *ip; // 声明一个指向整型的指针 ip = &var; // 将var的地址赋给指针ip printf("var 的值为 %d\n", var); // 输出: var 的值为 10 printf("*ip 的值为 %d\n", *ip); // 输出: *ip 的值为 10 printf("ip 的值为 %p\n", (void*)ip); // 输出: ip 的值为 指向var的内存地址 return 0; } ``` 在这个例子中,`ip`是一个指向整数的指针。通过取地址运算符`&`,我们获取了变量`var`的内存地址,并将其赋给了`ip`。然后,通过解引用运算符`*`,我们可以访问`ip`所指向的内存位置中的值。 掌握指针不仅有助于编写高效的代码,还能加深对计算机系统工作原理的理解。尽管指针的学习曲线可能较为陡峭,但通过不断的练习和实践,任何人都能够熟练地运用这一强大的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值