C语言(三 字符串、结构体、共用体、输入输出)

字符串
字符串是保存了一些字符,最后以null(’/0’)结尾的一维字符数组。

char str[6] = {'h','e','l','l','o','/0'};
char str[ ] = "hello" ;

还有一些字符串操作函数:
1、strcpy(s1,s2) 复制s2到s1
2、strcat(s1,s2) 将s2连接到s1后
3、strlen(s1) 返回s1的长度
4、strcmp(s1,s2) 比较s1和s2,从左到右,按照ASC||码大小比较,若相等,返回0,若s1<s2,则返回小于0;若s1>s2,则返回大于0;
5、strchr(s1,ch) 返回字符ch在s1中的位置
6、strstr(s1,s2) 返回字符串s2在s1中第一次出现的位置

结构体
结构体是用户自定义储存类型不同的变量的数据类型。

struct Books{
	int id;
	char[10] des;
	double price;
	}
Books  b1,b2;   //定义两个Books类型的结构体变量

在使用结构体内变量时,使用成员访问运算符(.),如Books.id,结构体同样可以作为函数参数。
结构体指针
定义方式与其他数据类型定义指针相似,struct Books * p = &b1;
要取到结构体内部数据,int num = p->id;

共用体
共用体是一种特殊的数据类型,它允许在内存中的同一位置储存不同的数据类型。可以自定义一个带有多个成员的共用体,但同一时间只能允许其中一种类型带有值。

union Data{
	int i;
	float j;
	char [20] str;
	} data;
data.i = 10;

若我们按顺序给data的三种数据类型赋值,那么只有最后赋值是有效的,同一个内存位置只能存储一个数据,而且共用体所占大小是根据最大成员来决定的。

位,字,字节
:"位(bit)“是电子计算机中最小的数据单位。每一位的状态只能是0或1。
字节:8个二进制位构成1个"字节(Byte)”,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
:"字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。
一般的计算机都已经到了64位机 也就是说 一个基本单位就是64位,也就是8字节了。这样再综合上面的分析就不难看出,结构体,共用体,位域的定义中,按顺序分配内存,下一个字段所占大小如果超出了上一个字段占的内存单元剩余部分,那么它会重新申请下一个内存单元,而上一个多出部分将空着。

Typedef与#define
两者作用相似,都可以为类型定义别名,但是#define也可以为数值定义别名,#define ONE 1; 还有一个区别就是,typedef是编译器进行处理的,#define是预编译器进行处理的。

C输入&输出
stdio.h 是C语言标准输入输出头文件,#include 预编译引入头文件。
printf() 标准输出(屏幕)
%d:格式化整数输出;%f:格式化浮点数输出。
getchar()读取下一个键入的单个字符,并返回为整数;
**putchar()**向屏幕输出一个单个字符,并返回相同的字符,两个函数同时只能返回一个字符。
**gets(char * s)**从输入流中读取一行放到s所指向的缓冲区,直到遇到终止符或EOF;
**puts(char *s)**把字符串s和尾随的一个换行符输出。
**scanf()**从标准输入流中读取输入
**printf()**把输出写到标准输出流中

#include <stdio.h>
int main( ) {
 
   char str[100];
   int i;
 
   printf( "Enter a value :");
   scanf("%s %d", str, &i);
 
   printf( "\nYou entered: %s %d ", str, i);
   printf("\n");
   return 0;
}

结果:

Enter a value :run 123

You entered: run 123 

另外,scanf()遇到空格会停止读取,i love you 会被认为是三个字符串。

猜你喜欢

转载自blog.csdn.net/weixin_42927264/article/details/82929508
今日推荐