1.整型变量修饰符

1)改变整型变量的存储空间

#include <stdio.h>

int main(int argc, const char * argv[]) {
//改变整型变量占用的存储空间
//int4 short2 long8 (long long)8
//short int占两个字节
short int a=;
short int a1=a<<;//2字节最小的负数-32768
a1=(a<<)-;//2字节最大的正数32767
printf("%hd\n",a1); int b=;//int 类型占4字节
int b1=b<<;//4字节最小的负数
b1=(b<<)-;//4字节最大的正数
printf("%d\n",b1); long int c=;//8字节
long int c1=c<<;
c1=(c<<)-;
printf("%ld\n",c1); return ; }

2)改变整型变量的符号

    //计算机默认的是有符号数
unsigned short d=-;//每位都变成1
printf("%u\n",d); unsigned int e=-;
printf("%u\n",e);

2.char类型常量的存储问题

sizeof('a');//4,先找到‘a’d的ascii码值97,把97的按照int类型进行存储

ch a='a'; sizeof(a);//1,先找到‘a’d的ascii码值97,把97的按照一个字节存储

一个字节范围-128-127;0-127用来存储特殊的符号

3.数组

把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组

一维数组:数组的每个元素都不是一个数组

定义格式:数组类型 数组名 [数组长度]

1)数组长度可以是常量或者常量表达式

2)数组名不能和其他变量同名

3)数组的长度不可以为一个变量,xcode已优化

4)可以使用宏定义

5)定义数组的时候可以同时定义普通变量 int x,y,a[4];

一维数组的初始化

1)定义的同时进行初始化,部分初始化

int a[4]={1,2,3,4};

int a[]={1,2,3,4};//数组的长度根据后面的值的个数决定

int a[4]={1,2};

int a[4]={[3]=4,[8]=34};//给下标是3和8的元素赋值

2)先定义后初始化

3)使用变量定义的数组不可以定义数组的同时对数组进行初始化

如果数组没有进行初始化,这时候数组元素是随机的垃圾值

如果进行了部分初始化,没初始化的那部分元素也自动被系统初始化为0了

对于字符是组来说,没有初始化的那部分元素也被系统初始化为0了

先定义后初始化的方式,如果部分元素被初始化了,系统不会对没有初始化的那部分元素进行初始化

4.一维数组的引用(访问)

a[0]...a[n-1]

5.一维数组的存储方式

1)连续的存储空间

2)数组名代表数组的首地址

3)每个元素的长度一样

4)数组中元素之间的地址是连续的

5)数组名是一个常量,存储的是数组的首地址

6.一维数组长度的计算方法

sizeof(数组名);//字节数

sizeof(数组名)/sizeof(数组元素类型);//数组长度

7.数组元素作为函数参数,实参和形参指向同样的地址空间,修改形参数组元素的值,实参的值也会改变

数组名作为函数参数后,数组的长度信息会丢失,sizeof(arr)变成8,地址占8个字节

8.冒泡排序:相邻的数比较,大的数放后面,每趟取得最大的数放在最后

#include<stdio.h>
int main(int argc, const char * argv[]) {
//定义一个字符数组
int a[]={,,,,,,,,,};
int temp;
for(int i=;i<-;i++){
for(int j=;j<--i;j++){
if(a[j]>a[j+]){
temp=a[j];
a[j]=a[j+];
a[j+]=temp;
}
}
}
for (int i=;i<;i++){
printf("%d\t",a[i]);
}
return ;
}

9.选择排序:每一个数跟后面的数比较,小的放到当前位置

#include<stdio.h>
int main(int argc, const char * argv[]) {
//定义一个字符数组
int a[]={,,,,,,,,,};
int temp;
for(int i=;i<;i++){
for(int j=i+;j<;j++){
if(a[i]>a[j]){
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for (int i=;i<;i++){
printf("%d\t",a[i]);
}
return ;
}

第二种方式:

#include<stdio.h>
int main(int argc, const char * argv[]) {
//定义一个字符数组
int a[]={,,,,,,,,,};
int min;
int temp;
for(int i=;i<;i++){
min=i;//假设每次最小元素的下标是i;
for(int j=i+;j<;j++){
if(a[min]>a[j]){
min=j;//找到最小元素的下标
}
}
if(i!=min){//如果i=min不用交换,否则交换
temp=a[min];
a[min]=a[i];
a[i]=temp; }
}
for (int i=;i<;i++){
printf("%d\t",a[i]);
}
return ;
}

10.折半查找:在有序数组中查找一个值,思路:设置一个low=0;higt=length-1找中间的元素mid=(low+high)/2跟key值比较,如果key值>mid的值,high=mid-1,如果key值大于mid,那么low=mid+1;继续查找,直到相等

//折半查找
int key=;
int low=,high=-;
int mid=; while(low<=high){
mid=(low+high)/;
if(key<a[mid]){
high=mid-;
}else if(key>a[mid]){
low=mid+;
}else{
printf("找到了%d",mid);
break;
}
}

如果要插入一个数到有序数组中,那个返回的下标应该是low(查找不到的话,low的值比high的值大)

C语言回顾-整型变量修饰符和一维数组的更多相关文章

  1. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  2. 整型变量修饰符,char类型数据存储原理,字节数,

    //------------------整型变量修饰符 修饰符(int short long longlong signed unsigned)所有修饰符都是用来修整形 int 4short %hd ...

  3. Java入门 - 语言基础 - 07.修饰符

    原文地址:http://www.work100.net/training/java-modifier-type.html 更多教程:光束云 - 免费课程 修饰符 序号 文内章节 视频 1 概述 2 访 ...

  4. 关于Java语言中那些修饰符

    一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...

  5. C#语言中的修饰符

    public:公有访问.不受任何限制. private:私有访问.只限于本类成员访问,子类和实例都不能访问. protected:保护访问.只限于本类和子类访问,实例不能访问. internal:内部 ...

  6. 枚举java语言中的修饰符组合

    package model; /*22:37 2019/7/20*/ /* top class的修饰符组合 abstract final public 2 * 2 * 2 warning: abstr ...

  7. 【C语言入门教程】4.1 一维数组

    数组与指针涉及到数据在内存中的存储位置问题,数组由连续的存储单元组成,最低地址对应于数组的第一个单元,最高地址对应于数组的最后一个单元.指针是一种特殊的变量,该变量所存放的是内存地址,通过指针变量可访 ...

  8. C语言100题集合005-删除一维数组中所有相同的数,使之只剩一个

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...

  9. C语言作用于修饰符

    之前就遇到了坑,莫名其妙报错.   总结下: extern   声明在其他文件里 static     仅当前文件可见

随机推荐

  1. [IOS]Swift使用SVGKit的记录

    最近打算使用swift和SVGkit做一个app,遇到了好多状况,对于初学者的几个概念,一个是静态库,第二个是oc和swift混编,第三个是xcode6b4的类库不齐全. 首先是SVGKit的GitH ...

  2. java任务调度quartz框架的小例子

    quartz是一个开源的作业调度框架,当然,java可以使用Timer来实现简单任务调度的功能,但Timer是单线程的设计方案,使得一个任务延迟会影响到其他的任务.java也可以使用Scheduled ...

  3. 用Python的xlrd模块处理时间单元格

    import xlrd data = xlrd.open_workbook(EXCEL_PATH) table = data.sheet_by_index(0) lines = table.nrows ...

  4. Java POI导入导出Excel

    1.异常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 解决方法: 使用的poi的相关jar ...

  5. 2016 年 50 个最佳的轻量级 JavaScript 框架和库

    作者:IT程序狮链接:https://zhuanlan.zhihu.com/p/24598210来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 回顾今年已发布的 JS ...

  6. Thinking in Java——笔记(11)

    Holding Your Objects In general, your programs will always be creating new objects based on some cri ...

  7. 过滤关键字防止XSS攻击

    public static string ClearXSS(string str) { string returnValue = str; if (string.IsNullOrEmpty(retur ...

  8. Spring IoC容器初始化过程学习

    IoC容器是什么?IoC文英全称Inversion of Control,即控制反转,我么可以这么理解IoC容器: 把某些业务对象的的控制权交给一个平台或者框架来同一管理,这个同一管理的平台可以称为I ...

  9. [原创]Hadoop默认设置导致NameNode启动失败一例

    看到市面上很多书在讲解Hadoop的时候都轻描淡写的提到了HDFS的设置问题.大多采取的是默认设置,最多也就是设置一些副本数量之类. 笔者在工作中遇到了这样一种情况:每次重启系统之后,NameNode ...

  10. The shortest path---hdu2224 && Tour---poj2677(旅行商问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2224 题意:平面上有n个点,问去的路只能从左到右,回的路只能从右到左的,且来回必须经过所有点的最小路径 ...