【基础层】##编程##笔记##C## Chapter_3:数组

###################################################################################################
Chapter_3
数组
	一维数组:
		定义: <存储类型><数据类型>数组名[常量表达式];
		int data[5];
		data和&data[0] 表示首地址
		赋值:
		
	//C语言不允许动态定义数组大小
	//数组的首地址就是a,数组名是常量,用于存放数组的首地址 
	//int a[10]; a就是指向a[0]的int型指针常量
	
	选择排序&冒泡排序
	
	二维数组:
		赋值:
		int a[3][3]={0,1,2,3,4,5,6,7,8,9};//容易出错,最好用花括号括起来
		int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	
		也可以不指定第一维,但是第二维必须指定
		int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
		也可以只对前面的赋值,后面的自动赋值0
		int a[3][4]={{1},{5,6,7,8},{9,10}};
	
	a[0]首地址,一级指针常量
	
	字符数组:
	定义:
	char string[20]="hello"
	等价于 char string[20]={'h','e','l',''l','o','\0'}; //这种赋值方式必须后面加上 '\0'
	
	字符数组引用赋值和其他运算和普通数组一样,只是可以scanf %s
	scanf("%s",string) //%s 输入末尾自动加上\0,这是一个结束标志
	printf("%s\n",string)
	
	如果一个scanf函数输入多个字符串,则以空格为间隔
	char string1[5],string2[5],string3[5];
	scanf("%s%s%s",string1,string2,string3);
	
	H	O	W	\0	随机值
	A	R	E	\0	随机值
	Y	O	U	?	\0
	
	二维字符数组(也可称之字符串数组)定义和赋值问题:
	char string[3][10]={"pascal","cobol","fortran"}; 
	后面没有初始化的部分是随机值,不知道内存里面到底是什么,一维字符数组也是一样的
	
	字符处理函数:
	char c;
	c=getchar();
	
	c=65;
	putchar(c); //输出A
	
		
		1. char string[80];
		gets(string);//输入字符串可以包含空格,仅以回车结束,
				 //不可以换行结束,和scanf()的区别 scanf 遇空格回车tab都可以结束or指定输入长度%3d 
			//注意gets这个函数是缺陷的因为gets函数没有限制读取的长度,这样输入过多可能会导致堆栈溢出
			安全起见使用gets_s()函数
		2. char string[]={"hello"};
		puts(string);//输出字符串
		#include<string.h>
		3. strcpy(string1,"hello") //地址赋值给地址
		4. strcat(string1,string2);//地址赋值给地址,拼接起来
		5. strcmp(str1,str2);//返回ASCII差值 
			0是48,A是65,a是97    A比a要小!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		6. strlen(str1);//字符串长度,不包括\0

猜你喜欢

转载自blog.csdn.net/husterjwx/article/details/88429454