c语言指针

C语言博客作业05--指针

女生的网名这么多〃 提交于 2019-12-25 03:26:39
1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 可能因为这两周进度的加快,感到比较吃力,知识点比较抽象,不那么容易理解,也可能最近因为被准备考试,写论文等事情追赶着,对C语言、PTA这方面有所懈怠(我的错。。。T_T)。总之,在指针方面还存在很多不足,有的知识点没有及时掌握,还要课后花时间看课本,对一些用法或者需要注意的地方还不够熟悉,希望通过之后的时间可以抓紧时间,掌握不熟练或者遗漏的知识点,多加练习,掌握这方面的知识。 1.2.2 代码累计 2.PTA总分 2.1截图PTA中指针题目集的排名得分 2.2 我的总分: 125分 3.PTA实验作业 3.1 PTA题目 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 3.1.1 算法分析 定义 i,统计count=0; 定义 字符数组s[500001],指针*p; gets(s); //输入英语 i=strlen(s)-1;//取字符串长度 for i=strlen(s)-1 to 0 do if s[i]==' ' then if s[i+1]!=' '&&s[i+1]!='\0' //出现单词 p=s+i+1; count++; if count>1 then printf(" ");//控制输出最后一个单词没有空格 printf("%s",p); end if s

Go语言基础介绍

前提是你 提交于 2019-12-25 01:07:12
Go是一个开源的编程语言。Go语言被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。目前,Go最新发布版本为1.10. Go语言可以运行在Linux、FreeBSD、Mac OS X和Windows系统上。 1. 结构:Go语言的基础组成有以下几个部分:包声明、引入包、函数、变量、语句&表达式、注释。 (1)、必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main (2)、注释与C++相同,有单行注释即”//”和多行注释即”/* … */”两种。 (3)、当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出;标识符如果以小写字母开头,则对包外是不可见的,但是它们在整个包的内部是可见并且可用的。 2. 基础语法: (1)、Go标记:Go程序可以由多个标记组成,可以是关键字、标识符、常量、字符串、字符。 (2)、行分隔符:在Go程序中,一行代表一个语句结束。每个语句不需要像C++语言一样以分号”;”结尾,因为这些工作都将由Go编译器自动完成。如果你打算将多个语句写在同一行,它们必须使用”;”为区分,但在实际开发中我们并不鼓励这种做法。 (3)、注释:注释不会被编译,每一个包应该有相关注释。单行注释以”//

线性表

江枫思渺然 提交于 2019-12-24 19:06:18
阅读目录 一、线性表类型定义 二、顺序表 三、链表 四、总结 一、线性表类型定义 1.定义 线性表是n个数据元素的有限序列 2.基本操作 InitList(&L) #构造一个空的线性表L DestroyList(&L) #销毁线性表L ClearList(&L) #将L重置为空表 ListLength(L) #返回L中数据元素个数 GetItem(L,i,&e) #用e返回L中第i个数据元素的值 LocateElem(L,e,compare()) #返回L中第1个与e满足关系compare()的数据元素的位序。若这样的数据远古三不存在,则返回值为0 ListInsert(&L,i,e) #在L中第i个位置之前插入新的数据元素e,L的长度加1 ListDelete(&L,i,&e) #删除L的dii个数据元素,并用e返回其值,L的长度减1 二、顺序表 1.定义 线性表的顺序存储结构称为顺序表。 假设线性表的每个元素需占用l个存储单元,一般来说,线性表的第i个数据元素a i的存储位置为LOC(a i) = LOC(a 1) + (i-1)*l 2.实现 由于高级程序设计语言中的数组类型也有随机存取的特性,因此,通常都用数组来描述数据结构中的顺序存储结构。在此,由于线性表的长度可变,且所需最大存储空间随问题不同而不同,则在C语言中可用动态分配的一维数组 顺序开始为为1

Rust基础

瘦欲@ 提交于 2019-12-24 18:03:03
一:编译器 Rust的编译器叫rustc,类似javac一样,负责将源代码编译成可执行文件或者库文件(.a/.so/.lib/.dll等) 二:核心库和标准库 Rust语言由核心库和标准库组成,核心库是标准库的基础,核心库不依赖于操作系统和网络相关的库,一般写嵌入式应用会用到; 可以在模块顶部引入#![no_std]来使用核心库; 标准库则一般用来开发应用程序,它提供了开发应用程序所需的基础和跨平台支持,比如println!宏其实就是标准库里的,它依赖操作系统提供的API来实现在标准输出流里打印数据; 三:包管理器 Rust的包管理器是cargo【马车】,而Rust里每个项目编译成的库叫做crate,类似Java里的jar包; cargo除了是包管理器,它还能用于创建可执行程序项目和库项目,命令分别是: 1.cargo new exec_proj 2.cargo new --lib lib_proj 然后可以通过cargo build和cargo run对项目进行编译和允许; 四:Rust的语句和表达式 Rust里语法可以分为两大类,即语句和表达式; 语句是指分号结尾,或者花括号结尾的代码,比如输出语句,变量声明语句或结构体声明语句等等; 表达式则是指没有分号的表达式,如果它处于某个X块或函数最后一行,那么它将自动作为X块或函数的返回值,比如1 + 1就是一个表达式

PHP运行原理

坚强是说给别人听的谎言 提交于 2019-12-24 09:28:53
PHP简介:PHP是一种适用于web开发的动态脚本语言(网页快捷开发),是用纯C语言实现的。我们可以认为PHP就是一个用C语言实现包含大量组件的软件框架。更狭义一点可以认为是一个功能强大的UI框架。 PHP的设计理念及特点 多进程模型:PHP采用多进程模型,不同请求之间互不干涉,保证了一个请求挂掉不会对其它请求和服务造成影响。当然,PHP目前已支持多线程模型; 弱类型语言:PHP是一门弱类型语言,变量的类型在定义时是不需要给定的,会在运行中根据变量的值发生隐式或是显式的类型转换,这种机制的灵活性在web开发中非常方便、高效; PHP通过引擎(zend)+组件(extension)的模式来降低内部耦合; 中间层(sapi)隔绝web server 与 PHP; 语法简单灵活,没有太多的规范,当容易导致代码风格的混乱。 PHP的四层架构(如下图) Zend引擎:也可以称之为Zend软件虚拟机,用于翻译执行PHP代码。Zend整体用纯C实现,是PHP的内核部分,它将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode代码,并实现相应的处理方法、实现了基本的数据结构(主要的数据结构是hashtable)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。 Opcode:是一种PHP脚本编译后的中间语言

C语言高级代码

拟墨画扇 提交于 2019-12-24 06:45:04
指针 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存变量地址的变量。 # include <stdio.h> int main ( ) { int a = 2 , b = 6 , c = 10 , d = 8 , e = 4 ; //取地址运算符 int * pa = & a ; int * pb = & b ; int * pc = & c ; int * pd = & d ; int * pe = & e ; printf ( "%#X %#X %#X %#X %#X\n" , pa , pb , pc , pd , pe ) ; //取值运算符 printf ( "%d %d %d %d %d\n" , * pa , * pb , * pc , * pd , * pe ) ; return 0 ; } 指针访问数组 # include <stdio.h> //下标法 /* int main() { int a[12]={2,3,6,5,8,0,9,4,1,7,11,20}; for(int i=0;i<12;i++) {

delphi指针

元气小坏坏 提交于 2019-12-23 22:24:25
delphi中由于vcl的存在,于是指针很少用到。昨天和“贱男”(一个做sp的朋友)在讨论一个多线程的问题,最后考虑是不是指针传递的错误。 要求是这样的:sql的数据库,程序中的主线程以sql查询获取二十条记录,然后传递给子线程,主线程挂起。while ....not语句,一条条赋给子线程,每子线程存一条记录,以指针传递的(pchar).应用华为的api(vc编写)其中LPCSTR用delphi 中pchar代替,但是最后子线程得到的数据是乱七八遭的东西。不从数据库读取数据,读字符串和变量都是正确的,实在不解?是不是指针传递数据时候出错? 顺便放出pascal的指针: 浅谈Object Pascal的指针 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人 产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。 以下内容分为八个部分,分别是 一、类型指针的定义 二、无类型指针的定义 三、指针的解除引用 四、取地址(指针赋值) 五、指针运算 六、动态内存分配 七、字符数组的运算 八、函数指针 一、类型指针的定义

嵌入式软件工程师经典面试题

[亡魂溺海] 提交于 2019-12-23 21:01:56
1、int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p=&a[1]; 则p[6]等于8 2、整数数组清零:bzero(),memset()。 3、sizeof();测试变量所占地址的字节数 4、 main() { char *str[]={“ab”,“cd”,“ef”,“gh”,“ij”,“kl”}; char t; t=(str+4)[-1]; printf("%s",t); }则显示"gh" 5、小端:低位字节数据存储在低地址 大端:高位字节数据存储在低地址 例如:int a=0x12345678;(a首地址为0x2000) 0x2000 0x2001 0x2002 0x2003 0x12 0x34 0x56 0x78 大端格式 6、异步IO和同步IO区别 如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完,相反,异步IO操作在后台运行, IO操作和应用程序可以同时运行,提高系统性能,提高IO流量; 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行,而异步文件IO中, 线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求后,将会通知线程IO操作完成了。 7、用变量a定义 一个整型数 int a; 一个指向整型数的指针 int a; 一个指向指针的指针

delphi指针

人走茶凉 提交于 2019-12-23 10:42:35
浅谈Object Pascal的指针 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人 产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。 以下内容分为八个部分,分别是 一、类型指针的定义 二、无类型指针的定义 三、指针的解除引用 四、取地址(指针赋值) 五、指针运算 六、动态内存分配 七、字符数组的运算 八、函数指针 一、类型指针的定义。对于指向特定类型的指针,在C中是这样定义的: int *ptr; char *ptr; 与之等价的Object Pascal是如何定义的呢? var ptr : ^Integer; ptr : ^char; 其实也就是符号的差别而已。 二、无类型指针的定义。C中有void *类型,也就是可以指向任何类型数据的指针。Object Pascal为其定义了一个专门的类型:Pointer。于是, ptr : Pointer; 就与C中的 void *ptr; 等价了。 三、指针的解除引用。要解除指针引用(即取出指针所指区域的值),C 的语法是 (*ptr),Object Pascal则是

转帖关于new/delete的运算符和malloc()/free()的标准库函数

随声附和 提交于 2019-12-23 09:48:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> new--------delete malloc--------free 问题: 我又一个对象类,里面有一个指针链表,动态分配空间,在析构的时候释放。开始对对象进行new操作,但是执行delete对象操作的时候出错,提示在析构的时候内存有问题。可是这时候成员一个比特的内存都没有分配啊。所以析构的时候应该什么内存操作都不执行。 更奇怪的是采用free()函数就可以释放这种对象,但是内存却不见减少,整个程序内存占用节节升高?这是为什么? 回复1: 你在析构函数当中没有正确的释放你申请的内存,比如,这个对象当中有一个指针,是采用动态申请内存的,在构造函数当中应该把它的值设置为NULL,然后在某个方法当中会申请内存,是采用new方法进行申请的,在析构函当中,应该先判断该指针是否为空,如果不为空,则使用delete释放内存,然后再把该指针设置为NULL。这样就可以了,如果你在外面是采用new申请这个对象,则在使用完成后使用delete释放就可以了。 回复2: 补充一点:new和malloc虽然都是申请内存,但申请的位置不同,new的内存从free store 分配,而malloc的内存从heap分配(详情请看ISO14882的内存管理部分), free store和heap很相似,都是动态内存,但是位置不同