C语言---数组,字符串数组,冒泡排序
来源:互联网 发布:mac桌面不显示u盘 编辑:程序博客网 时间:2024/05/16 05:04
一、数组
1.数组的定义: intarr[]={12,13,14,15}; 或者 int arr[10]={12,13,14,15,16};
初始化元素的个数可以不全,未初始化的元素默认为0
2.求数组的空间:
sizeof(arr); 或者sizeof(元素)*元素的个数;
3.求数组的个数:
假设arr为int类型的数组,sizeof(arr)/sizeof(int); 或者sizeof(arr)/sizeof(arr[0]);
注:在实际开发过程,往往不直接写数组个数,而是用求数组个数。这样有利于总数发生变化时,遍历数组时不需要修改每一处。
4.越界问题:C语言内部没防止越界,程序员只能通过代码来防止出现。
二、字符串数组
1.字符串数组:是一种特殊的数组。特征是:
(1)必须是char类型的数组。
(2)在数组定义的有效空间内,必须含有一个数值是‘\0’的字节。
(3)'\0'作为字符串的结束标志。
2. 字符串数组的初始化:
(1)指定元素个数的数组:
char str1[10] = {'a','b'}; //不是有效字符,因为缺少’\0’结束符号
char str2[10] = "aab"; //不可超过9个有效字符
(2)不指定个数的字符串数组,根据初始化个数包括'\0'
char str3[] = "abcdef"; //申请7个字节的数组空间,多了一个”\0”
char str4[] = {'x’, 'y', 'z',108}; // 申请是4个字节的数组空间
3.数组长度和字符串长度:
(1)strlen函数:是用来计算字符串中有效字符的长度。(不包括结尾符)
(2)sizeof:求字符串数组的元素个数,sizeof得出的结果至少比strlen大1以上。
(3)strlen函数:计算方法是从数组头循环到结尾符'\0'结束,得出的字符串有效字符长度总是小于sizeof得出的的数值。
(4)sizeof:得出的数组长度与数组内每个元素存储的数值无关;而strlen函数返回的字符串长度,与结尾符'\0'在数组中的位置有关。
char str1[]={'A',66,'D','X',105 };char str2[]="console";printf("sizeof(str1)=%d\n",sizeof(str1)); // 5printf("sizeof(str2)=%d\n",sizeof(str2));// 8 printf("strlen(str2)=%d\n",strlen(str2));// 7
三、数组做参数
数组做参数时, 可以不指定长度,也可以随便指定任何长度。因为数组做参数时性质已经变了,本质上只传递了数组的地址(指针)给形参。数组的空间特征已经消失了,无法通过形式参数获取来源数组的元素个数。
无论实参数组有多少个元素,使用sizeof获取形式参数的大小结果一定是4。(因为任何一个指针变量占用的大小都是4个字节)。
#include <stdio.h>void bubble_sort(int a[],int nLen);void Print(int a[],int nLen);int main(int argc, char* argv[]){printf("排序前的数组: \n");int arr[]={5,15,9,8};Print(arr,sizeof(arr)/sizeof(arr[0]));bubble_sort(arr,sizeof(arr)/sizeof(arr[0]));printf("排序后的数组:\n");Print(arr,sizeof(arr)/sizeof(arr[0]));return 0;}//冒泡排序void bubble_sort(int a[],int nLen){int i=0,j=0;--nLen;while(i<nLen){j=0;while(j<nLen-i){if(a[j]>a[j+1]){int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}j++;}i++;}}void Print(int a[],int nLen){int i=0;//while(i<sizeof(a)/sizeof(a[0])){ //此时的a是指针,占4个字节,即sizeof(a)/sizeof(a[0]=1.所以只打印一次while(i<nLen){printf("a[%d]=%d \n",i,a[i]);i++;}}
- C语言---数组,字符串数组,冒泡排序
- C语言基础-- 冒泡排序,字符串数组
- C 字符串数组冒泡排序
- c语言数组--冒泡排序
- c 语言字符串数组排序
- C语言 输入整数数组 冒泡排序
- c语言冒泡排序,指针,数组
- C语言 冒泡法数组排序
- C语言 数组与冒泡排序
- C语言数组练习 冒泡排序~
- 好玩的C语言数组!!(冒泡排序数组)
- 数组冒泡排序和字符串冒泡排序
- C语言编程练习——字符串数组的冒泡排序,从小到大
- C语言数组实现冒泡排序和选择排序程序
- 【C语言】编写冒泡排序,排序一个整形数组。
- C语言数组实现冒泡排序和选择排序程序
- 【C语言】写冒泡排序可以排序一个整型数组。
- 【C语言】【笔试题】使用回调函数编写冒泡排序,可以排序整形数组,也可以排序字符串
- JSP的内置对象
- 浮点数在内存中的表示
- RunTime小试身手
- MODIS热红外数据辐射亮度值的计算
- DM3730 LCD控制器驱动框架
- C语言---数组,字符串数组,冒泡排序
- C#中的readonly
- Leetcode Longest Substring Without Repeating Characters
- 分子量 Molar Mass uva1586
- ios开发之AppDelegate
- Java并发编程:Callable、Future和FutureTask
- Round Robin WRR DRR MiDRR WFQ
- Swift - 操作SQLite数据库(引用SQLite3库)
- 在KEIL中建立了工程之后,编译就出现这样的提示can't execute 'C:\Keil\C51\BIN\A51.EXE'