【C语言】03 数据(1)

3.1  基本数据类型

在C语言中,仅有四种基本数据类型  ——  整型、浮点型、指针和聚合类型(数组、结构等

3.1.1  整型

整型又包括字符型、短整型、基本整型和长整型,他们都分为有符号和无符号两个版本,规定:

长整型至少和基本整型一样长,而整型至少应该和短整型一样长。

字符型在本质上是小整型值,缺省的 char 可能是 signed,也可能是 unsigned,这取决于编译器,因此,只有当 char型变量显式声明为 signed 或 unsigned 时,才对其执行算数运算。

、整型字面值(整型常量)

字面值是字面值常量的缩写,当程序内出现整型字面值时,它属于整型家族哪一种取决于字面值是如何书写的,并且可以在字面值后添加后缀来改变缺省规则,添加 L 或 l ,被解释为长整型。添加 U 或 u ,被解释为无符号整型,如果都添加,则被解释为无符号长整型。例如:

122L  

整型可以用八进制表示,在数字前加0,也可以用十六进制表示,在数字前加0x。例如:

0173       0xFFFF

字符常量就是用单引号引起来的单个字符或转义字符或三字母词。例如:

'M'      '\n'      '\102'      '??)'


、const 常量(符号常量)

与普通变量极为相似,只是在他被初始化之后,值就不可以在改变。例如:

const double pi = 3.141592;

const 常量与宏常量相比,优点是能指出类型,比如上个例子中的 pi 是 double 类型


、枚举类型

枚举类型指他的值为符号常量而不是字面值的类型。例如:

enum  Jar  { AB , CD , EF , GH , IJ }

首元素不附初值的话,默认为0,后一个元素不赋值的话,默认比前一个元素大1,这种类型的变量实际上是以整型的方式存储,这些符号名的实际值都是整型值。

宏和枚举的主要区别是作用的时间和存储形式不同。宏定义是在编译预处理阶段作用的,也就是在编译预处理时,就会进行宏替换,将程序中的所有宏名替换为所定义的常量名,而枚举则是在程序运行之后才起作用的。宏定义不分配内存空间,而枚举常量存储在数据的静态存储区中(这一点一定要注意)。宏只占用代码段的空间,而枚举除了占用代码段空间外,还耗费CPU资源。(关于宏我们在之后的预处理处再说)


3.1.2  浮点类型

浮点类型包括 float 、double 和 long double 类型,标准规定:long double 类型至少和 double 类型一样长。

浮点数字面值在缺省情况下都是 double 类型,除非在其后面有 L 或 l 后缀,表示为 long double 类型,或者跟一个 F 或 f ,表示为 float 类型。


3.1.3  指针类型

指针就是C语言为什么如此流行的重要原因。

变量的值存储于计算机的内存中,每个变量都占据一个特定的位置,每个位置都由地址唯一确定,指针只是地址的另一个名字罢了,指针变量就是其值为另一些变量的地址的变量。通过地址而不是名字来访问数据常常引起混淆,事实上并不应该搞混,比如门牌号来标识一个街道上的房屋,你不能把门牌号码和房子里的东西搞混。

我们可以把计算机的内存想象成一条街道上的一间间房子,每个房子用门牌号码唯一确定。即每个地址上都保存一个值,但是这个值和其地址值是独立且不同的,虽然都是数字…


字符串常量

C语言不存在字符串类型,但是提供字符串常量。字符串就是一串以 NUL 结尾的零个或多个字符。字符串通常存储在字符数组中,这也是C语言没有显式的字符串类型的原因。注意:字符串不包括 NUL 字符。例如:

"Hello"      "Line 1\n Line2"      ""

最后一个例子说明,字符串常量(不像字符常量)可以为空,但是内部依然存在 NUL 。

之所以把字符串常量放在这里,因为当在程序中使用字符串常量时后生成一个"指向字符的指针",当表达式中出现字符串常量时,使用的就是字符所存储的地址,而不是字符本身,因此,我们可以把一个字符串赋值给一个指向字符的指针,而不能赋值给字符数组(与初始化不同,可以初始化给一个字符数组),字符串常量的直接值就是指针,而不是本身。

如果觉得不能赋值或复制字符串不方便,C语言标准库函数给我们提供了函数,用于复制,连接,比较,计算字符串长度以及在字符串中查找特定字符的操作。(具体实现我们之后会说)




深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值