C语言的常量和字符串

 更新时间:2021年12月13日 16:43:09   作者:驽马Numa  
这篇文章主要为大家介绍了C语言常量和字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

常量种类

C语言中,我们常使用的常量有以下几种:

  • 字面常量
  • const常变量
  • #define定义的标识符常量
  • 枚举常量

代码如下

#include<stdio.h>
enum { //使用enum来建立枚举常量
	papa,//不赋值默认从0开始,如若赋值,从此依次递增
	mama,
	me,
	familynumber
};
int main() {
	3.1415926;//普通的字面常量
	const int a = 100;//定义const常量
	printf("a=%d\n", a);//a被const定义,变得不可修改
#define T 999
	printf("T=%d\n", T);//使用宏定义常量T(既define的标识符常量)	
	printf("familynumber=%d", familynumber);//枚举常量的应用,打印出一个整形
	return 0;
}

在用const定义一个常变量后,如仍然给这个常变量赋值,将会出现以下情况

在这里插入图片描述

注意!!

此时,此常变量既不是变量也不是常量!

因为,如果我们用此常变量定义一个数组的大小时,系统也会报错

在这里插入图片描述

字符串

C语言中,用char定义字符类型数据变量;

我们知道了例如'a',是一个字符,

那么什么是字符串呢?

其实啊,字符串就是多个字符。

“Hello World!”

这就是一行简单的字符串。

字符串的结束标志

char arr1[] = {"abcd"};
	char arr2[] = {'a','b','c','d'};
	char arr3[] = {'a','b','c','d','\0'};
	
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("%s\n", arr3);

此时打印出结果为

在这里插入图片描述

arr2里面有四个字符,与arr3相比,最后缺乏了结束标志\0;

所以出现了经典的烫烫烫烫,这是因为缺乏结束标志,就会导致数据溢出;

那为什么arr1没有问题呢?

因为arr1是由字符组成的字符串,字符串的最后,隐藏有一个结束标准\0,只不过我们看不到罢了~

关于字符串的长度

我们之前了解到,想要得到某个数据类型占据了多少内存,

得用到库函数 sizeof,

那我们如果想要得到一个字符串的长度,那我们应该用什么呢?

strlen

int main() {
	printf("%d\n", strlen("abcd"));//使用库函数strlen得到字符串的长度,注意;\0不会被计算入内
	return 0;
}

如此,我们便得到了字符串的长度,4

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 详解C++中inline关键字的作用

    详解C++中inline关键字的作用

    这篇文章主要为大家介绍了C++中的inline关键字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 浅谈c和c++的某些小区别

    浅谈c和c++的某些小区别

    下面小编就为大家带来一篇浅谈c和c++的某些小区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • OpenCV识别图像上的线条轨迹

    OpenCV识别图像上的线条轨迹

    这篇文章主要为大家详细介绍了OpenCV识别图像上的线条轨迹,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C语言实现扫雷游戏详解(附源码)

    C语言实现扫雷游戏详解(附源码)

    大家好,本篇文章主要讲的是C语言实现扫雷游戏详解(附源码),感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • STL常用容器详细解析

    STL常用容器详细解析

    这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)
    2013-09-09
  • 详解C语言如何实现双向带头循环链表

    详解C语言如何实现双向带头循环链表

    双向带头循环链表应该是链表中非常方便的一种,可以很容易的在任意位置上进行插入和删除,可以很容易的对链表进行管理。本文将利用C语言实现双向带头循环链表,需要的可以参考一下
    2022-08-08
  • C语言深入讲解链表的使用

    C语言深入讲解链表的使用

    当我们在写一段代码时,如果要频繁的在一块区域进行插入或者删除操作时,会发现用数组实现会比较复杂,这时候我们就要用另一种数据结构,链表来实现
    2022-05-05
  • C语言简明讲解类型转换的使用与作用

    C语言简明讲解类型转换的使用与作用

    类型转换(type cast),是高级语言的一个基本语法。它被实现为一个特殊的运算符,以小括号内加上类型名来表示,接下来让我们一起来详细了解
    2022-04-04
  • C语言main()函数的参数问题详解

    C语言main()函数的参数问题详解

    这篇文章主要为大家详细介绍了C语言main()函数的参数问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Opencv透视变换综合实例详解

    Opencv透视变换综合实例详解

    这篇文章主要为大家详细介绍了Opencv透视变换综合实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论