指针变量

C语言博客05--指针

社会主义新天地 提交于 2020-02-01 20:36:34
1.本章学习总结(2分) 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 本周学习了指针,都说指针是C语言的灵魂,也是C语言区别于其他语言所独特的地方,学好指针的相关内容十分必要,但同时难度也更大,需要付出更多的时间去理解和熟练掌握。学习到指针部分之后明显感觉有点吃力,虽然也和前面的知识结合紧密,但是需要对指针的概念搞得很清楚,不然就会把地址和该地址所存的内容搞混。然后指针上完之后老师又教了结构体和文件相关的内容,真的要认真学习多花时间才能完全理解掌握。目前的自己觉得还是一直半解,蛮吃力的。 在数据传递时,如果数据块较大,这时就可以使用指针传递地址而不是实际数据,即提高传输速度,又节省大量内存。 指针为动态数据结构(如二叉树、链表)提供支持 1.2.2 代码累计 2.PTA总分(2分) 2.1截图PTA中函数题目集的排名得分 3.PTA实验作业(1分) 3.1 PTA题目1 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 33.1.1 算法分析 int main() { 定义字符数组 str[500010]; 输入gets(str); 定义长度变量len; len=strlen(str); 定义i,j,count=0; 定义flag=0; for i=len-1 to i>=0 do if str[i]!=' ' then count++

Golang - 指针与引用

天大地大妈咪最大 提交于 2020-02-01 18:51:28
​ Golang有指针 , 那么一切数据都是值传递吗 ? 都需要用户进行指针传递吗, 其实不然, 对于Go语言, 虽然有指针, 但是其也有引用传递. 是不是很绕, 因为引用传递就是指针传递哇 . 我们继续解释. 概念 在Go语言中,对于 布尔变量 或 数值类型 或 字符串类型 或 数组 以及 struct 都是按照值传递的:值在传递给函数或者方法时会被复制一份,然后方法或函数使用的是复制的这份值,也就不会对原值产生什么影响。一般情况下,对于布尔变量或数值类型或字符串类型的按值传递是非常廉价的,Go语言编译器会在传递过程中进行安全优化。 对于大字符串是这样,对于数组进行值传递也是如此。为了解决可能产生的巨大代价,Go语言使用数组切片来代替数组的使用。传递一个切片的代价跟传递字符串差不多,无论该切片的长度或容量是多大。对切片进行复制修改操作也不会像字符串那样需要创建新的切片, 因为切片是可变的,属于引用类型 。 因此以下就是重点 : 语言中的值传递类型有:基本数据类型,数组 , struct 特点 :变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放 , 在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数 , 所以他最大的好处就是不怕多线程安全性问题. 但是浪费内存 Go语言中的引用类型有:映射(map),数组切片(slice)

C语言博客05--指针

末鹿安然 提交于 2020-02-01 14:46:01
1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 本章学习了指针的应用,指针是C语言中很有特色的一个东西,其他的语言基本没有这个功能,直接在内存上对变量赋值,同时也学到了很多函数可应用在字符串中运用比如strlen、strcat、 strcmp等等,对数组的大小进行控制也学到了一个新的方法,动态内存分配,可以对数组的大小进行控制,防止像以前那样给数组定义过大的范围,浪费内存。以后也能更好的运用数组。 学完了指针,以后在写程序时需要用函数对变量进行赋值时就不用那么多函数一一进行返回值,可以直接在函数中用指针对函数外面的变量进行修改。 1.2.2 代码累计 2.PTA总分 2.1截图PTA中函数题目集的排名得分 2.2 我的总分:110 3.PTA实验作业 3.1 PTA题目1 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 3.1.1 算法分析 输入字符串str x=strlen(str); max=x-1; for i=max to 0 then if(字符等于' ') then for j=i+1 to max then 输出下标从i+1到max的字符 输出空格 end for max=i-1; end if end for 3.1.2 代码截图 3.1.4 PTA提交列表及说明 Q1:刚开始段错误因为数组的范围不够

c程序设计错题集

自作多情 提交于 2020-02-01 10:26:47
错题集 数组: 1.数组定义中,数组名后是用方括号括起来的常量表达式,不能用圆括号。(正确) 解析:数组标准样式array[ ],不能用array(); 2.函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。 (正确) 解析:用strcmp函数时头文件用#include<string.h> 在字符串比较时 如果相等时 返回int值0 如果字符串1>字符串2,则返回正整数 反之返回负整数。 3 .数组定义后,只能引用单个的数组元素,而不能一次引用整个数组。 (正确) 解析:数组只能用循环输出, 但是字符串数组可以用%s输出 4 .若有定义int a[]={2,4,6,8,10},a[1]和a++表示的含义相同。 (错误) 解析:a为数组名,数组名不能自增。 程序填空题: 1.选择法排序:本题要求将给定的nnn个整数从小到大排序后输出。输出时相邻数字中间用一个空格分开,行末不得有多余空格。 #include <stdio.h> #define MAXN 10 int main() { int i, index, k, n, temp; int a[MAXN]; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &a[i]); } for(k = 0;

C语言之结构体

喜你入骨 提交于 2020-02-01 03:56:21
概念 结构体是一种构造类型,由若干个成员组成,成员可以是基本数据类型,或是另一个结构体 声明结构体 struct 结构体名 { 成员列表 }; 结构体名表示结构的类型名。 声明一个结构体表示创建一种新的类型名(自定义数据类型),然后用类型名定义变量。 struct Product { char name[10]; char shape[10]; char color[10]; float price; } 使用结构体定义变量有三种方式 第一种:声明结构体类型,再定义变量 struct Product p1; struct Product p2; p1和p2是结构体变量名,这两个变量具有相同的结构 类比: 类型名 变量名 int a; | | struct Product p; struct Product整体表示一种数据类型 定义结构体变量后,系统会为其分配内存单元 第二种:声明结构体类型时,同时定义变量(可以定义多个变量) struct 结构体名 { 成员列表 } 变量名列表; example: struct Product { char name[10]; char shape[10]; char color[10]; float price; } p1, p2; 第三种:直接定义结构体类型变量(匿名结构体,没有结构体名称) struct { 成员列表 } 成员变量;

指针、数组与sizeof运算符

那年仲夏 提交于 2020-02-01 01:51:37
1、sizeof是C语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返回()里边 的变量或者数据类型占用的内存字节数。 2、sizeof存在的价值: 主要是因为在不同平台下各种数据类型所占的内存字节数不尽相同(譬如int在32位系统上为4字节,在16位系统上 为2字节)。所以程序中需要使用sizeof来判断当前变量/数据类型在当前环境下占几个字节。 3、举例说明: 例子1:char str[] = "hello"; sizeof(str) //元素所占的字节数,也就是数组的大小 占6个字节 sizeof(str[0]) //第0个元素,第0个元素是char型的,所以 占1个字节 sizeof(str) //字符串的长度(不包含最后的\0), 占5个字节 例子2:char str[] = "hello"; char *p = str;//str做右值,相当于首元素的首地址,数组的元素是char型, //那么str就是char *,刚好匹配 sizeof(p) //p本身是一个指针变量,跟p指向的变量一点关系没有;只是一个char *指针的长度, //32位系统上所有的指针的长度都是4 sizeof(*p) //p所指向的变量,p所指向的变量是char型的,相当于sizeof(char) 自然是1 strlen(p) //相当于strlen

strlen与sizeof区别(转载)

非 Y 不嫁゛ 提交于 2020-02-01 01:49:11
#include "stdio.h" #include "string.h" void main() { char aa[10]; printf("%d",strlen(aa)); printf("%d",sizeof(aa)); } 程序运行得到结果是strlen(aa)=15.sizeof(aa)=10;这是怎么回事呢?strlen是有效字符串的长度,不包含‘\0’,与初始化有关系,而sizeof与初不初始化没有关系。下面我们看看它们的区别吧(以下都是在网上查的) strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,知道遇到'\0'停止。 char aa[10];cout<<strlen(aa)<<endl; //结果是不定的 char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0 char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3 而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。 sizeof(aa) 返回10 int a[10]; sizeof(a) 返回40 1.sizeof操作符的结果类型是size_t

c++复合类型

别等时光非礼了梦想. 提交于 2020-02-01 01:04:24
1.数组 数组存储同类型的值; 数组使用下标或索引对元素进行标号,从0开始编号; 只能在定义数组时才能使用初始化,此后就不可以了,也不能将一个数组赋给另一个数组; 初始化数组时,提供的值可以少于数组元素的值。如果只对数组的一部分初始化,则编译器将把其他元素设置为0。因此,将数组中所有元素都初始化为0非常简单——只需显式地将第一个元素初始化为0,然后让编译器将其他元素都初始化为0即可:long totals[500] = {0}. 2.字符串   要将字符串存储到数组中,最常用的方法有两种——将数组初始化为字符串常量、将键盘或文件输入读入到数组中。 3.string类 可以使用c-风格字符串来初始化string对象; 可以使用cin来将键盘输入存储到string对象中; 可以使用cout来显示string对象; 可以使用数组表示法来访问存储在string对象中的字符。   c风格的字符串是用数组存放的,一般要以'\0'结束而c++主要以 string类 代替,更加高效,且不易出错   例如:string str = "123";就是c++的风格;char str[4]="123";就是c风格。string是c++中的关键字,和int,float等等一样, 在c++中,string 定义的变量可以直接存储字符串。在C语言中是没有这种直接存储字符串的变量的。   [ ]里面是4,是因为

C++基础总结(4)-----指针

耗尽温柔 提交于 2020-02-01 01:04:08
指针是一个变量,其存储的值是地址,而不是值本身。 (有点类似于组成原理里面的变址寻址) 在讨论指针之前,我们先来看看如何寻找常规变量的地址。只需对变量引用取地址符(&)就行了。 如下面一段代码: #include <iostream> using namespace std; int main() { int dounts=6; double cpus=5.6; cout<<"dounts = "<<dounts<<", address is "<<&dounts<<endl; cout<<"cpus = "<<cpus<<", address is "<<&cpus<<endl; return 0; } *运算符被称为间接值或者解除引用运算符。将其用于指针,便可以得到该地址存储的值。 duck变量为int型变量,其分配的地址是1000,里面存储的值是12,而birding是一个int型指针变量它本身的地址是1006,而在它里面存储的值duck的地址1000。 所谓指针指的是存储的其他变量的地址。 指针的声明和初始化 int *ptr;//声明一个int型指针 *两边的空格是可选的。 传统上,C程序员使用这种格式。 int *ptr;//强调*ptr是一个int类型 C++程序员通常使用下面这种方式 int* ptr; 强调int*之一中指向int类型的指针

Day04 (一)_TCP传输服务器端设计

给你一囗甜甜゛ 提交于 2020-01-31 14:37:08
前言 IP 地址的作用是唯一识别网络中的主机, IP 位于网络层 协议 + 端口号:可以唯一识别主机中的应用程序(进程) 这样,利用三元组( IP 地址,协议、端口)就可以标识网络的进程,网络中的进程通信就可以利用这个标识与其他进程进通信。 套接字 Socket 的来龙去脉: socket 即是一种特殊的文件,一些 socket 函数就是对其进行的操作(打开、读 / 写 IO 、关闭),这些函数我们在后面进行介绍。在组网领域的首次使用是在 1970 年 2 月 12 日发布的文献 IETF RFC33 中发现的,撰写者为 Stephen Carr 、 Steve Crocker 和 Vint Cerf 。根据美国计算机历史博物馆的记载, Croker 写道:“命名空间的元素都可称为套接字接口。一个套接字接口构成一个连接的一端,而一个连接可完全由一对套接字接口规定。”计算机历史博物馆补充道:“这比 BSD 的套接字接口定义早了大约 12 年。 8.1 TCP/IP TCP/IP :传输控制协议 / 网络协议是指能在多个不同网络间实现信息传输的协议簇。本协议不仅仅指的是 TCP 和 IP 两个协议,还有 FTP 、 SMTP 、 TCP 、 UDP 、 IP 等协议构成的协议簇。 根据以上介绍,可以看出 TCP/IP 协议中包含有 UDP 协议,姑且可以这样认为: UDP 是 TCP