c语言
qq_36562289
这个作者很懒,什么都没留下…
展开
-
c语言的单链表
单链表的节点有数据域和指针域,数据域是用来存储数据的,指针域是用来储存直接后继节点的域。1.创建节点:typedef struct Node{ int data;//数据域 struct Node *next;//指针域 }LinkList,*Link; void Creastlist(Link, H){Link: p, newNode;int原创 2016-11-01 14:36:13 · 259 阅读 · 0 评论 -
一周总结
在课堂上,本周复习了之前的指针和数组,讲了为什么要提出指针,以及指针与数组的区别;主要讲了函数,因为之前上课时就讲了函数,所以听起来很容易接受,从函数的三要素上来了解函数;函数名:指针常量,用来存放函数的入口地址;函数的形参:讲了传入参数和传出参数的概念。前者,一个变量原来在主函数中定义并赋值了,把值出给形参。接形参大多根据传入实参的类型来判断;后者,是一个变量在主函数中只定义未赋原创 2016-12-11 20:14:59 · 310 阅读 · 0 评论 -
周总结
本周课上学习了makefile的制作及一些功能的使用一些功能函数变量及几种makefile的功能作用等,还有就是在写一些代码是的一些快捷键;除此之外还学了c语言的概述和其他一些语言的了解和对比在自己学习的过程中对指针的了解还不是很透彻,只要在指针函数,或者指针的引用不是很了解。。。其次就是对一些代码不太熟,比如说对函数这一块不是太熟,因为自己理解了一些书上的代码后去写函数的程序很多运行原创 2016-11-20 19:57:09 · 214 阅读 · 0 评论 -
数组的一些概念
&a 代表数组的地址对一维数组名取地址等于一维数组的地址;对数组的地址取值等于等于一维数组的首元素的地址 Int *p = #P = #*p = num = *(&num);所以*(&a)= a;一维数组的理解* ( *( a + i ) + j )a + i :第i +1个一维数组的地址;*(a + i):第原创 2016-12-03 22:27:32 · 248 阅读 · 0 评论 -
数据类型
int a;整型变量int *a;整型指针变量int **a;整型指针的指针变量int a[10];整型数组int *a[10];整型指针数组int (*a)[10];数组指针变量int (*a)(int);函数指针 int (*a[10])(int);函数指针数组 int *(*(*fp1)(int)[10]; 分析:fp1是一个函数指针变量原创 2016-11-21 22:42:41 · 150 阅读 · 0 评论 -
数组与指针的混合使用
今天主要讲了,以为一维数组的输入输出,二维数组的输入输出,还有指针数组的输入输出,还有就是main函数的形参int argc char * argv[]函数名是指针常量可作实参传递函数的指针作形参:回调函数,或钩子函数作用是提高代码的扩展性和维护性再添加新功能时,修改代码越少,扩展性越好写代码,要注意的是不仅仅,是简单的算法,而是要注意扩展性,维原创 2016-12-05 22:09:23 · 490 阅读 · 0 评论 -
位运算四道程序
1. 题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数#include void fun(char a){ int i; int temp; int count = 0; for(i = 0;i { temp = (a>>i) & 1; if(temp == 1) {原创 2016-11-23 23:15:10 · 400 阅读 · 0 评论 -
c语言位运算的作用
C中的位运算可以对整形INT 或字符型CHAR 进行二进制按位运算& 是对两个二进制数进行 与运算| .....................或运算^ .....................异或运算~ 是单目运算,对一个二进制数取反<< 是对一个二进制数进行左移运算>>.....................右移运算 C语言中提供给开发人员一种位的运算,这转载 2016-11-24 21:39:49 · 423 阅读 · 0 评论 -
联合体
联合体又被称为共用体,我个人感觉,共用体名字更合理。和结构体同属于C语言数据类型中的结构类型。例如uniuon data{ int i ; char c ;float f;}x;定义共用体类型名称为data类型,有三个属性,分别为int i ; char c ;float f;这三个属性共同占用内存空间,所以空间占用选属性中占用最多的那个,也就是float f。转载 2016-12-13 21:15:56 · 197 阅读 · 0 评论 -
指针与数组的区别,以及函数的实现过程
指针与数组的区别1.为什么要引出指针因为从空间的分配上,由于数组是静态分配利用率低,指针是动态分配,空间利用率高。因为c语言的特点,能直接访问硬件正是由于指针能够访问地址,才产生的指针是个变量,数组名是个常量,所以指针的使用比较灵活。而且函数的形参也都是指针。因为实参传的是地址从安全性上,指针会造成内存泄漏,数组只会产生越界。从访问效率上原创 2016-12-07 22:44:38 · 215 阅读 · 0 评论 -
关键字的总结
关键字: 补充:Cpu的三大存储:运算器,控制器,寄存器Register作用:请求编译器尽可能的将数据保存在寄存器中,从而省去了cpu从内存中提取数据的时间,提高了访问的效率;何时使用:频繁被访问的变量或循坏变量注意事项: 1.只能修饰局部变量,不能修饰全局变量和函数; 2.不能使用&来获取变量的地址,因为可能不是在内存中存储;原创 2016-12-18 19:24:31 · 218 阅读 · 0 评论 -
内存泄漏
问:下面的代码会导致内存泄漏吗?#include void main(void){ char *ptr = (char*)malloc(10); if(NULL == ptr) { printf("\n Malloc failed \n"); return; } else转载 2016-11-27 18:16:20 · 180 阅读 · 0 评论 -
指针的简单定义
Int *p:p是指针变量,存放的是地址,这个地址是整型地址;;; 指针(是一个变量)步长:+1后跳的地址:对应的内存空间;指向的内存空间; Int num = 5;int * p = &num;num++:对num对应的内存空间的值+1;P++:对p对应的内存空间+1;(*p)++:对p指向的内存空间的值+1; 指向的内存空间:就是这个指针原创 2016-11-28 21:54:16 · 186 阅读 · 0 评论 -
删除子串
#include #define MAX_SIZE 1024void delete_str(char *src,char *sub){ int i; int j; int len = strlen(sub); int src_len = strlen(src); while(*src != '\0') {原创 2016-11-29 22:37:27 · 393 阅读 · 0 评论 -
四大存储变量
存储类别: 1.自动型 2.外部型 3.静态型 4.寄存器型出现的范围: 函数内部 任何出现说明部分的位置 函数内部 函数内部判别方法: 1.显示auto 显示出现extern原创 2016-11-03 19:31:20 · 235 阅读 · 0 评论 -
c语言内存分配与释放
什么是堆?说到堆,又忍不住说到了栈!什么是 栈?1、什么是堆:堆是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程 初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。2、什么是栈:栈是线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立。转载 2016-11-06 20:37:36 · 321 阅读 · 0 评论 -
Linux 下能用于 C 应用程序开发和调试的工具
Linux的发行版中包含了很多软件开发工具. 它们中的很多是用于 C 和 C++应用程序开发的. 本文介绍了在 Linux 下能用于 C 应用程序开发和调试的工具. 本文的主旨是介绍如何在 Linux 下使用 C 编译器和其他 C 编程工具, 而非 C 语言编程的教程.GNU C 编译器GNU C 编译器(GCC)是一个全功能的 ANSI C 兼容编译器. 如果你熟悉其转载 2016-11-08 21:51:56 · 545 阅读 · 0 评论 -
三道程序的分析
1.第一题输入一个字符串带数字和字母,求出数字的个数;首先字符串遍历然后筛选出字母,然后计数,然后输出计的数;2.第二题是输入一个字符串输出数字。首先字符串遍历,然后把每个字符转化为数字相应的乘10;然后输出数字;3.第三题输入一个数字,把他改成字符串输出;首先把一个数字拆开把他放入数组,然后再用个数组的倒叙就可以了,正确的输出字符串;4.第四题一个带数字带字母的字符串,把字符原创 2016-11-09 22:57:42 · 346 阅读 · 0 评论 -
指针
指针变量的值存储于计算机的内存中,每个变量都占据一个特定的位置。每个内存位置都由地址唯一确定并引用,就像一条街道上的房子由他们的门牌号码标识一样。指针只是地址的另一个名字。指针变量就是一个其值为另外一个内存地址的变量。指针常量 指针常量与非指针常量在本质上是不同的,因为编译器负责把变量赋值给计算机内存中的位置。把指针常量表达为数值字面值的形式几乎没有用处。 当一个字符串原创 2016-11-10 21:47:15 · 154 阅读 · 0 评论 -
编译器的三个扩展
三个级别的优化:-O1 提供基础级别的优化 -O2 提供更加高级的代码优化,会占用更长的编译时间 -O3 提供最高级的代码优化 链接的作用:把目标文件和库文件链接成可执行文件链接就是链接器ld将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件。链接的命令为:ld –static crt1.o crti.o crtbeginT.o hello.o原创 2016-11-11 22:35:29 · 248 阅读 · 0 评论 -
c语言指向结构体数组的指针
c指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。结构指针变量也可指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地址。设ps为指向结构数组的指针变量,则ps也指向该结构数组的0号元素,ps+1指向1号元素,ps+i则指向i号元素。这与普通数组的情况是一致的。【例11-6】用指针变量输出结构数组。struct stu{转载 2016-11-13 18:52:12 · 1040 阅读 · 0 评论 -
c语言的字符数组和字符指针
这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序:#include int main(int argc, char *argv[]){ char day[15] =转载 2016-11-14 22:25:47 · 300 阅读 · 0 评论 -
结构体
结构体 理解与测试: 1)结构体也是一种数据类型。结构体类型变量的定义有三种方式。第一种,先声明一个结构体类型再定义一个结构体变量。第二种,声明结构体类型时同时定义结构体变量。第三种,直接定义结构类型变量,即不出现结构体名。结构体可以嵌套定义,即成员也可以是一个结构体变量。2)成员名可以与程序中的变量名相同,二者不代表同一个对象。 3)结构体变量的初始化可以类似数组的初原创 2016-11-18 21:50:57 · 265 阅读 · 0 评论 -
野指针
野指针:定义:随机指向一块内存容易造成的错误:内存泄漏,但是不一定每次都会产生段错误,因为系统可能给已经分配过的申请过的内存地址:如何避免野指针:应该养成以下的编码习惯:、当一个指针没有指向时,初始化为空:NULL:0地址对应的空间不允许做操作当要往一个指针指向的空间赋值时,一定要先检查这个指针是否分配了空间malloc(sizeof(int))形参原创 2016-11-30 22:13:35 · 164 阅读 · 0 评论 -
本周总结
本周总结:本周课堂上主要讲了运算符控制符 关键字 复合数据类型;运算符中函数传参从右边开始;++i被替换成i变量i++被替换成常量;结束的标志是函数括号 , ;Mask:掩码在位运算中特别重要;位运算在硬件的使用时很重要;右移都是拿符号位补位;左移都是拿0来补位;在不适用第三方的情况下交换两个值:a = a ^ b;b = a原创 2016-12-18 20:09:48 · 207 阅读 · 0 评论