IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言结构体整理 -> 正文阅读

[C++知识库]C语言结构体整理

字符串

  • 以0结尾的一串字符

  • 0或'\0'等价但是与'0'不同

  • 0标志着字符串的结束,但它不是字符串的一部分,故计算字符串长度的时候不包括0

  • 字符串以数组的形式存在,可以以数组或指针的形式访问(指针居多)。

字符串变量

char *str ="hello";
?
char word[] ="hello";
?
char line[10]="hello";
?

字符串常量

  • "hello"会被编译器编译成一个字符数组,这个数组的长度为6,(结尾是表示结束的0)

  • 两个相邻的字符串(中间没有其他符号)会被连接起来 char*s="Hiello,world!";这里的S是一个指针,初始化为指向一个字符串常量 。

  • 不要对S所指的字符串做写入:S[0]=x;

  • 如果需要修改字符串,应该用数组:char S[]="Hello,world!";

数组:字符串在这里作为本都变量空间自动被回收

指针:不知道字符串的位置

一般用作处理参数和动态分配空间

因此

构造字符串用数组

处理字符串用指针

<!--只有char*所指的字符数组有结尾0,才能说它所指的是字符串-->

空字符串

  • char buffer[100]="";

表示这是一个空的字符串,buffer[0]=='\0

  • char buffer[]="";

表示这个数组的长度只有1!

字符串数组

  • char **a a是一个指针,指向另一个指针,那个指针指向一个字符(串)

  • char a (二维数组要有确定的大小)

或者a[]={} 其中a[0]相当于char

<!--switch语句可以用字符串数组写-->

单字符的输出与输入

int putchar(int c);

输出一个字符

当输出不能用了会返回EOF

int getchar(void);

从标准输入读入一个字符

string.h

  • size_t strlen(const char *s);

    返回S的字符串长度(不包括结尾的0)

    <!--sizeof(x)中包括结尾的0-->

  • strcmp

  • int strcmp(const chars1, const chars2);

  • 比较两个字符返回

    1. 0:s1==s2

    2. 1:s1>s2

    3. -1:s1<s2

返回两个不相等字符的差值。

  • strcpy

  • charstrcpy(char * restrict dst, const char *restrict src);

  • 把src的字符串拷贝到dst

  • 返回dst

    复制字符串

    char * dst =(char * )malloc(strlen(src)+1);

    strcpy(dst,src);

  • strcat

  • char * strcat(char * restrict s1,const char * restrict s2);

  • 将S2拷贝到S1的后面,接成一个长的字符串

  • 返回S1

  • 注意S1必要有足够空间

枚举法

  • 枚举使用户定义的数字类型,它用关键字 enum以如下语法来声明:

  • enum+名字{名字1 名字2.......}

  • 大括号里面的名字是字符常量,它们的类型是int,值则依次从0到n:

  • enum colors{red,yellow,green};

    #include <stdio.h>
    enum color{red,yellow,green};
    int main(int argc,char const *argv[])
    {
     ? ?int color=-1;
     ?  ,char *colorname=MNLL;
     ? ?scanf("%d",&color);
     ? ?switch(color)
     ?  {
     ? ? ? ?case red:colorname="red";break;
     ? ? ? ?case yellow:colorname="yellow";break;
     ? ? ? ?case green:colorname="green";break;
     ? ? ? ?defauit: colorname="unknown";break;
     ?  }
     ? ?printf("你喜欢的颜色是%s\n",colorname);
     ? ?return 0;
    }
  • 枚举的量可以用作值

  • 枚举类型可以跟上enum作为类型

  • 实际上enum可以看作int来对数据进行输出输入

    #include <stdio.h>
    enum color{red,yellow,green};
    void f(enum color c);
    int main(void)
    {
     ? ?enum color t =red;
     ? ?scanf("%d",$t);
     ? ?f(t);
     ? ?return 0;
    }
    void f(enum color c)
    {
    printf("%d\n",c);
    }

结构类型

声明结构类型

  • struct date

  • 函数内部声明的结构只能在函数内部使用,在外部声明结构类型就可以被多个函数使用。

声明结构的形式

1.

struct point{
 ? ?int x;
 ? ?int y;
};
struct point p1,p2;

2.

struct point{
 ? ?int x;
 ? ?int y;
}p1,p2;

3.

struct {
 ? ?int x;
 ? ?int y
}p1,p2;

  • 1.和2.中都声明了结构point并且定义了变量,3.中只是定义了两个变量。

结构成员

  • 结构与数组有点像

数组中有很多单元;结构里面有很多成员。但数组的单元必须是相同类型的,而结构的成员不一定是相同的。

  • 数组用[]运算符和下标访问其他成员:a[0]=10;

  • 结构用'.'运算符和名字访问其他成员:pl.x today.day;

结构运算

  • 要访问整个结构,直接用结构变量的名字

  • 可以对整个结构做赋值,取地址,也可以传递给函数参数

例如: (数组不可以做如下运算)

  1. pl=(struct point){5,10};

  2. 相当于pl.x=5;pi.y=10;

  3. pl=p2;

  4. 相当于pl.x=p2;pl.y=p2.y;

  • 结构变量的名字并不是结构变量的地址,必须使用&运算符

struct date *pDate=&today;

结构作为函数参数(与数组不同)

  • int numberofdays(struct date d)

  • 整个结构可以作为参数的值传入函数。,此时是在函数内新建一个结构变量,并复制调用的值

  • 也可以返回一个结构

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:24:34  更:2021-11-30 15:28:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:24:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码