关于数组的操作:

初始化:

完全初始化:

Int a[5] = {1,3,4,5,6};

不完全初始化:   未被初始化的元素自动为零

Int a[5] = {1, 3, 4};

不初始化,  所有元素是垃圾值;

Int a[5];

清零:

Int a[5] = {0};

多维数组:  不存在多维数组:因为内存是线性一维的

比如  int a[3][4]  该数组是含有3个元素的一维数组  只不过每个元素都可以再分为4个小元素。。。。

函数:

数组中的变量叫元素  函数中的变量叫形参

避免了重复性操作;  有利于程序的模块化;;;;;

相对独立的功能  用一个函数表示;;;;;

函数:

逻辑上:能够完成特定功能的独立代码块

物理上:能够接收数据  能够对接受的数据进行处理   ;能够将数据处理的结果返回(当然也可以不放回任何值)

总结:  函数是个工具,他是为了解决大量类似问题而设计的;

函数可以当做一个黑匣子;

函数的返回值的类型:函数最终返回值的类型 以函数名前的返回值类型为准。

Return表达式的含义:

1:终止被调函数,向主调函数返回表达式的值。

2:如果表达式为空,则只终止函数,不想被调函数返回任何值。。。

函数的分类:

有参函数和无参函数:

有返回值函数和无返回值函数

库函数和  用户自定义函数

普通函数 和  主函数(main函数)  一个程序必须有且只有一个主函数

主函数可以调用普通函数  普通函数不能调用主函数。。。

主函数是程序的入口 也是程序的出口。。

函数的声明:::

主义的问题:

函数调用核函数定义的顺序

如果函数调用写在了函数定义的前面,则必须加函数声明;

函数前置声明:

1:告诉编译器即将可能出现的若干个字母代表的是一个函数

2:告诉编译器即将可能出现的若干个字母代表的函数的形参和返回值;

3:函数声明是一个语句,末尾必须加分号;

4:对库函数的声明是通过#include <库函数所在的文件的名字.h>来实现

形参和实参

个数必须相同  位置一一对应  类型相互兼容;

变量的作用域和存储方式:

按作用域分:

全局变量:在所有函数外部定义的变量叫做全局变量

局部变量:只能在本函数内部使用

安变量的存储方式

静态变量

自动变量

寄存器变量

如果全局变量和局部变量相同时  局部变量就会屏蔽掉全局变量;;;

指针::::指针就是地址  就是内存单元的编号

指针  表示一些负责的数据结构   快速的传递数据  是函数返回一个以上的值

能直接访问硬件  能够方便的处理字符串  是理解面向对象语言中引用的基础

*指针运算符:

该运算符放在已经定义好的指针变量的前面

如果p是一个已经定义好的指针变量

则*p表示  以p的内容为地址的变量

如何通过被调函数修改主调函数普通变量的值

1:实参必须为普通变量的地址

2:形参必须为指针变量

3:在北调函数中通过

*形参名  =  。。。

的方式就可以修改主调函数的值

一个指针变量所占的字节数:

Sizeof(数据类型)

功能; 返回值就是该数据类型所占的字节数

例子: sizeof(int) = 4 ; sizeof(char)=1;  sizeof(double) = 8;

一个指针变量,无论它指向的变量占几个字节  该指针变量本身只占四个字节

一个变量的地址使用该变量首字母字节的地址来表示。。

动态内存:::*****************************************

传统数组的缺陷:

1:数组长度必须先制定, 且只能是长整数, 不能是变量

2:传统形式定义的数组, 该数组内存程序员无法手动释放   在一个函数运行期间,系统为该函数中数组所分配的空间会一值存在,直到该函数运行完毕时,数组的空间才会被系统释放掉。。

3:数组的长度不能在函数运行的过程中动态的扩充或缩小

数组的长度一旦定义,其长度就不能再更改。

4:A函数定义的数组,在A函数运行期间可以被其他函数使用,但A函数运行完毕之后,A函数中的数组将无法再被其他函数使用。

动态数组很好的解决了传统数组的缺陷

传统数组也叫静态数组。。。。

1:使用malloc函数,必须添加malloc..h这个头文件里,malloc函数中只有一个形参,并且形参是整形。。

个字节静态分配

Int * p = (int *)malloc(4);

动态内存和静态内存的比较

静态内存是由系统自动分配, 由系统自动释放

静态内存是在栈分配的。。

动态内存是有程序员手动分配的,  手动释放的

动态内存是在堆内存分配的。。

跨函数使用内存::::*********************************************************

Int * p  -----p里边只能存放intl类型变量的地址。。。。

&p  的地址类型为 int ** 类型的。。

结构体*************************************************************************

为了表示一些复杂的事物,而普通的变量类型无法满足实际要求

把一些基本类型数据组哈在一起形成的一个新的复合型类型数据,这个叫结构体。。。。。

如何取出结构体变量中的每一个成员

1: 结构体变量.。成员名

2:指针变量名->成员名

枚举**************************************************************************

把一个事物所有的取值一一列举出来便就是枚举;;;;;;;;;

补码:::*********************************************************************

在Vc++6.0中一个int类型的变量所能存储的数字的范围是多少?

原码:  也叫符号-绝对值码

表示正  1表示负,其余二进制位表示该数字的绝对值的二进制位。。。

原码简单易懂。   加减运算复杂。   存在加减乘除四中运算  增加了cpu的复杂度

零的表示不唯一

反码:   反码运算不方便  也没有在计算机中应用

移码:移码表示数值平移n位,n称为移码量。。

移码主要用于浮点数的阶码的存储

补码:  正整数转二进制

取余,  直至商为零,  余数倒叙排序

负整数转二进制:

,  不够位数时  左边加1;;;;;

求零的二进制

全是零

已知二进制求十进制

,  则表明是正整数,按普通方法来求。

,则表明;是负整数

, 所得数字就是该负数的绝对值

如果全是零, 则对应的十进制数字就是零。。。。

链表:

算法:

通俗定义:

解题的方法和步骤

狭义定义:

对存储数据的操作

广义定义:

广义的算法也叫泛型。。。

我们至少可以通过两种结构来存储数据:

数组:

优点:

存取速度快。

缺点:

需要一个连续的很大的内存。

插入和删除元素的效率很低。。

链表:

位运算符:::

1,什么是分配内存  什么叫释放内存。。。

把内存里的一块控制区域交给程序。  把使用权限给程序。。

这一块内存的控制权限 又交给操作系统。。

操作系统把某一块内存空间的使用权利分配给程序,这个叫分配内存

操作系统把分配给改程序的内存空间的使用权限收回,改程序就不能够在使用这一块内存空间。这叫释放内存。。

释放内存不是吧该内存的内容 清零。。

2.  变量为什么必须初始化。。

不初始化,则变量通常就是垃圾值。。。。

3. 详细说明系统是如何执行的  int i = 5; 这个语句。。

存储到i所关联的这块区域中。。

所谓内存区域就是内存中的一块存储单元。。。。

4,。详细列出c语言的所有基本类型

Int longint shor int char float double

5. 在printf函数中 int 用%d输出,,

Char 用 %c  double 用%lf   float 用%f.

6. 函数的优点是什么。。。。

避免重复性操作

有利于程序的模块化。。。。

7. 什么事指针 什么是地址  什么是地址变量 三者之间有什么关系。。。

地址是内存单元的编号。指针就是地址  指针和地址是同一个概念

指针变量就是存放内存单元编号的变量, 指针变量和指针是两个不同的概念,,,

只不过人们通常把指针变量称为指针。。

8. 请写出静态变量和动态变量的异同

相同:

都需要分配内存

不同:

静态变量是由系统自动分配,自动释放,程序员无法在程序运行后手动分配。

也无法在程序运行的过程中手动释放

静态变量是在栈中分配的。。

函数终止之后,静态变量的存储空间才会被系统自动释放。。

动态变量是有程序员手动分配的, 手动释放的。  程序员可以在程序运行过程中手动分配。也可以在程序运行过程中手动释放。

动态变量是在堆中分配的。。

程序员可以在函数执行的过程中的认可一个时刻手动的释放动态变量的空间,不需要等到函数终止时才释放。。

9. c语言中哪些知识是我们学习的重点。。  列举出来。。。。。。

函数  流程控制   指针   内存分配   静态内存 和 动态内存   。。

二进制全部为零的含义:::   --0000000000000000  的含义:

1:  数值为零

2:  字符串结束标记

3:   空指针NULL...

NULL表示编号为零的地址。。。。。    NULL表示的是零  而这个零不代表数字零。二代表的是  内存单元的编号--零。。。。。

我们计算机 规定了 以零为编号的存储单元的内容不可读  不可写。。

函数可以嵌套调用但不能嵌套定义。。。。*********************。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

c笔记的更多相关文章

  1. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  7. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  8. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  10. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

随机推荐

  1. Android Studio 使用genymotion 模拟器运行app时 提示找不到任何设备

    原因是使用了genymotion 默认的Android toos .打开genymotion  选择设置  ADB  使用自己的SDKtools 选择Android Studio 使用的SDK位置就行 ...

  2. SharePoint 2013 开发——发布SharePoint应用程序

    博客地址:http://blog.csdn.net/FoxDave 前几篇我们介绍了开发.部署和调试SharePoint应用程序的基础,本篇介绍更实用的操作,当我们开发一个SharePoint应用 ...

  3. SharePoint 2013 Nintex Workflow 工作流帮助(六)

    博客地址 http://blog.csdn.net/foxdave 工作流动作 7. Call web service(Integration分组) 一个调用WebService的操作. 自然,配置项 ...

  4. JVM-class文件完全解析-常量池

    在.java文件,讲过javac编译后产生的 .class文件中,头4个字节表示的是魔数,接着魔数后面的第5,6个字节存储的是次版本号,第7,8个字节存储的主板本号.那么再接下来的就是表示常量池入口了 ...

  5. 显示pdf

    document.all[document.all.PDFNotKnown ? "IfNoAcrobat" : "IfAcrobat"].style.displ ...

  6. 2016- 1- 16 NSThread 的学习

    一:NSThread的概念: 二:NSThread的使用: 1.创建一个Thread 1.1第一种方法: - (void)test1{ NSString *str = @"zhengli&q ...

  7. android自动化测试解决跨进程通信问题

    大概用这些吧: IPC  Handler    Messager   Bundle  service(binder)   messageconnection ,thead.getXXX.getId 注 ...

  8. 查看ubuntu文件目录的大小和文件夹包含的文件数 zT

    查看ubuntu文件目录的大小和文件夹包含的文件数 查看linux文件目录的大小和文件夹包含的文件数 统计总数大小 du -sh xmldb/ du -sm * | sort -n //统计当前目录大 ...

  9. java作业5

    (一)用你的大数类实现加和减两个功能(乘除阶乘未实现) import java.util.Scanner; import java.io.IOException; import java.io.Inp ...

  10. Android启动组件的三种主流及若干非主流方式

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处 启动组件的一些方式,今天做一个简要的总结 Service:通过startService()启动,或者写 ...