
C、C++
SakuraRe
简书地址 https://www.jianshu.com/u/668558fcc7ce 博客园地址 https://www.cnblogs.com/sakura579/
刚刚加入优快云 文章没有来得及搬过来 有兴趣可以去看看
目前大三 正准备考研
展开
-
字符型指针变量
#include <stdio.h> main(){ char *p = {"China"}; printf("%c",*p);}结果 C{ }并没有影响啊#include <stdio.h> main(){ char *p = "China"; printf("%c",*p);}结果 C“China” -> {‘C’,‘h’,‘i’,‘n’,‘a’}...原创 2020-08-13 09:36:59 · 716 阅读 · 0 评论 -
元素移动次数计数和静态链表
0位置之前 插入 要移动n个元素后面位置插入 比前面位置少移动一个于是推出了i位置之前插入 要移动n-i个元素这个也是同理0位置删除 移动n-1个元素i位置删除 移动n-i-1个元素推导总次数为(n-1+0)n/2 = (n-1)n/2平均移动 (n-1)/2####静态对于某种存储结构 其存储空间是一次性分配完毕 就叫静态分配####动态其存储空间是根据需要 多次分配 就叫动态分配之前所学的存储结构顺序存储结构就是 静态分配链式存储结构就是 动态分配###静态链表.原创 2020-08-12 09:02:49 · 514 阅读 · 0 评论 -
线性表最值问题
找最小值找最大值顺序表求最大值顺序表求最小值带头结点单链表求最大值带头结点单链表求最小值q是 最大值/最小值 的结点的指针当作小工具 熟记“删除” 并没有free要注意的是q所指结点 也就是最大值结点有可能是双链表的最后一个这个时候定义的r 它的值为NULL所以要判断一下当其为NULL的时候 就不需要使r的 llink 指针指向 l 了开头留的另一道题关键就在于定位如何在两个链表中定位出这么两个结点他们到共享结点的距离相同数一下原创 2020-08-12 09:02:16 · 511 阅读 · 0 评论 -
线性表习题01
由于链表不空 所以 p 和 L 指向 肯定 不同一个结点所以 p != Lp指向终端结点 不管链表空不空 p ->next = L这个选 Dfabs() 取绝对值函数if语句 判断 A[i] 与 B[i] 相等因为是float 类型 小数部分很难完全相等因此相减取绝对值 差小于min(事先宏定义了 一个很小的小数) 从而判断其相等而没有用 ==break的位置 有可能是第一个 A与B 不相等的元素也可能是An或者Bn的位置(超出表的范围)...原创 2020-08-12 09:01:22 · 162 阅读 · 0 评论 -
线性表两种存储结构的特性对比
考点我们一般的思维是见缝插针图中0~7 有8个元素8-1是7 再加上首尾 是9个空隙第二种是策略是在某个位置上插入元素同时规定 顺序表最后一个元素后面的位置(图中是8)也是一个可插入位置这样就有了9种可插入位置考研大多都是采用第二种方式的描述以位置为参考系的插入方式从写代码的角度 也是第二种也更适合翻译为代码因为位置可以清晰的定义表示而缝隙没有因此以后统一 一下插入操作 以元素位置作为插入目标不要再想以元素缝隙为插入目标###可插入位置 是原本顺序表中所有的位置以及最后原创 2020-08-12 09:00:44 · 434 阅读 · 0 评论 -
局部变量-全局变量
#include <stdio.h>int a,b;void func(){ a = 100; b = 200;}void func2(){ printf("%d,%d\n",a,b);}main(){ int a=1,b=2; func(); func2(); printf("a=%d,b=%d\n",a,b);}结果是100,200a=1,b=2可见此时全局变量变为100 200但是局部变量屏蔽全局变量 输出的是1 2执行func时因为a=1原创 2020-08-12 08:59:19 · 183 阅读 · 0 评论 -
分析语句
这个是几个语句#include <stdio.h>#include <stdlib.h>main(){ printf("e"); while(0); printf("r");}也许你会说 两个语句哈哈哈其实是三个语句while();有分号 是控制语句此时打印的是 er当while后面表达式是1时打印e 后程序一直运行 死循环...原创 2020-08-12 08:57:18 · 169 阅读 · 0 评论 -
%s
#include <stdio.h> main(){ char a[] = "Chinese"; char *p = "China"; printf("%s\n",a+2); }结果 inese%s①要求后面为列地址 如本题的a+2②遇到第一个’\0’则停止#include <stdio.h>#include <string.h>main(){ char a[20] = "ABCDEFGHI"; char *p = "1234567原创 2020-08-12 08:56:18 · 213 阅读 · 0 评论 -
高位 在前面 底位 在后面
#include <stdio.h>#include <stdlib.h>main(){ union { char i[2]; int k; }a; a.i[0]=2; a.i[1]=0; printf("%d",a.k);}结果 20002 0000 数组中下标小 地址小 下标大 地址大0000是高位 0002是低位0002 低地址0000 高地址高位 在前面 底位 在后面0000 0002数组是连续空间下标小 地址小 放底位原创 2020-08-12 08:55:31 · 1588 阅读 · 0 评论 -
下列( )与数据的存储结构无关的是
下列( )与数据的存储结构无关的是A栈B双向链表C散列表D线索树E循环队列答案A栈 是逻辑结构 线性表 加了点约束双向链表 链表 就是存储结构的体现散列表 顺序存储结构的扩展线索树 建立在二叉链表的存储结构循环队列 建立在顺序存储结构的队列...原创 2020-08-12 08:53:57 · 7517 阅读 · 0 评论 -
指针交换三种
#include <stdio.h>void func(int *p1,int *p2);main(){ int a,b; int *p1 = &a,*p2 = &b; scanf("%d%d",p1,p2); func(p1,p2); printf("a=%d,b=%d",a,b);}void func(int *p1,int *p2){ int temp; temp = *p1; *p1 = *p2; *p2 = temp; }输入的原创 2020-08-12 08:52:45 · 2551 阅读 · 0 评论 -
算法的常数级--对数级-线性级
当重复执行的次数,就是问题的规模很大的时候就有很大区别了.最好的算法就是常数阶的.无论问题规模多大执行时间不变.对数阶就是 log a N .执行时间随执行次数呈对数增长线性阶的次之.执行时间随问题规模增长呈正比例增长运行时间随着问题规模增大的增长速度:指数级别 > 立方级别 > 平方级别 >> 线性对数级别 > 线性级别 >> 对数级别 > 常数级别对数的底数和增长的数量级无关(因为不同的底数仅相当于一个常数因子),所以我们在说明对数级别时一般使用原创 2020-08-10 09:22:38 · 3992 阅读 · 0 评论 -
结构体 共用体变量直接相互赋值
#include <stdio.h>#include <stdlib.h>#include <string.h>main(){ struct node { int data; char ddd[10]; }; struct node aaa= {1,"abcdef"}; struct node bbb; bbb = aaa; printf("%s\n",aaa.ddd); aaa.data = 2; strcpy(aaa.ddd,"原创 2020-08-10 09:21:45 · 1399 阅读 · 0 评论 -
C++库常用函数一览(<string><cctype><algorithm><cmath><cstdlib><iomanip><numeric>)
1.标准C++库字符串类std::string的用法begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的大小length() 和size函数功能相同max_size 字符串可能的最大大小capacity 在不重新分配内存的情况下,字符串可能的大小e原创 2020-08-10 09:18:39 · 353 阅读 · 0 评论 -
C 二级指针
#include <stdio.h> main() { int a = 3; int *p = &a; printf("%d,%d\n",p,*p); int **q = &p; printf("%d,%d,%d,%d\n",q,p,*q,*p); printf("%d",**q); }结果6487572,36487560,6487572,6487572,33原创 2020-08-09 13:03:20 · 291 阅读 · 1 评论 -
多维数组-指针
#include <stdio.h>#include <string.h>main(){ int a[][3] = {1,2,3,4,5,6,7,8,9}; printf("%d\n",a[1]+2); printf("%d\n",&a[1][2]);}结果64875566487556#include <stdio.h>#include <string.h>main(){ int a[][3] = {1,2,3,4,5,原创 2020-08-09 13:02:53 · 123 阅读 · 0 评论 -
标准的c语言不支持二进制数字
原创 2020-08-09 13:00:29 · 2302 阅读 · 0 评论 -
switch执行顺序
#include <stdio.h>#include <stdlib.h>main(){ int a ; printf("请输入a的值"); scanf("%d",&a); switch(a){ case 1: a=111; case 2: a=222; default:a=333; } printf("a=%d",a);}无论输入什么 打印的都是333可见 在没有break的时候 无论是case1 还是case2 都会从上而下 运行原创 2020-08-09 12:58:57 · 1358 阅读 · 0 评论 -
extern存储类别c c++区别
##区别就是entern后面的数据类型是否可以省略c 两种#include <stdio.h>main(){ extern int a,b; printf("%d,%d",a,b);}int a=3,b=2;结果3,2#include <stdio.h>main(){ extern a,b; printf("%d,%d",a,b);}int a=3,b=2;结果3,2c++ 只有这一种#include <iostream&g原创 2020-08-09 12:57:05 · 231 阅读 · 0 评论 -
C-scanf
#include <stdio.h>#include <stdlib.h>main(){ int a=4,b=5,c=3; printf("请输入\"a=_,c=_\" "); scanf("a=%d,c=%d",&a,&b); printf("a=%d,b=%d,c=%d",a,b,c);/*此时我输入的是a=1,c=2 输出的结果是a=1,b=2,c=3也即是其实改变的是地址a 地址b的内容值但是用户会误认为值2是给了c 但是其实是给了b原创 2020-08-09 12:54:10 · 115 阅读 · 0 评论 -
c 从1加到100的四种方法 结果5050
for#include <stdio.h>#include <stdlib.h>main(){ int sum=0; int i=0; for(;i<101;) { sum+=i; i++; } printf("%d",sum);}while#include <stdio.h>#include <stdlib.h>main(){ int sum=0; int i=0; while(i<101)原创 2020-08-09 12:40:30 · 6796 阅读 · 1 评论 -
c变量三属性-类型-作用范围-存储类别
#include <stdio.h>int d=1;//全局变量int func(int p){ static int d = 5;// 局部静态变量 d+=p; printf("%d",d); return d;}main(){ int a = 3; printf("%d",func(a+func(d)));}结果 61515#include <stdio.h>main(){ extern a,b; printf("%d,%d",a,b)原创 2020-08-09 12:39:01 · 205 阅读 · 0 评论 -
struct 结构体
#include <stdio.h>#include <string.h>main(){ struct aa { int a; char b[15]; }bb; bb.a = 15; //bb.b = "abcde"; strcpy(bb.b,"abcde"); printf("%d\n",bb.a); printf("%s\n",bb.b);}结果15abcde注释的bb.b = “abcde”; 错误 不合法 bb.b是数组名 地址 是原创 2020-08-09 12:35:00 · 182 阅读 · 0 评论 -
c for
#include <stdio.h>#include <stdlib.h>main(){ int i=1; for(;i<3;) { printf("e\n"); i++; } }exp1可以放上面exp3可以放循环结果打印两次e#include <stdio.h>#include <stdlib.h>main(){ int i=1; for(;;) { printf("%d",i); i++原创 2020-08-09 12:29:46 · 139 阅读 · 0 评论 -
C++ 指针型变量的引用型定义
#include <iostream>using namespace std;void getResult(int *&p){ int a = 3; int *q = &a; cout<<"q="<<q<<endl; p =q;}int main(){ int *p = NULL; getResult(p); cout<<"result="<<p;}结果q=0x6ffdc4res原创 2020-08-08 09:59:49 · 753 阅读 · 0 评论 -
C++ 引用 &r
#include <iostream>using namespace std;int getResult(int r){ return ++r;}int main(){ int result = 0; result = getResult(result); cout<<"result="<<result;}结果result=1#include <iostream>using namespace std;void getR原创 2020-08-08 09:58:49 · 506 阅读 · 0 评论 -
看完就懂 C++ 的命名空间
命名空间是用来组织和重用代码的编译单元。NameSpace(名字空间),是为了解决命名冲突的问题而引入的概念。通过使用 namespace xxx(就是xxx使用的范围),你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。C++标准程序库中的所有标识符都被定义于一个名为std(standard)的namespace中。一 :和<iostream.h>格式不一样,前者没有后缀。两者是两个不同的文件。后缀为.h的头文件c++标准已经明确提出不支持了。因此,当使用&l原创 2020-08-08 09:58:05 · 165 阅读 · 0 评论 -
C++、C都可以用的定义结构体
#include <iostream>using namespace std;int main() { typedef struct { int num; char f; }S; S s; s.num = 10; s.f = 040; int a = s.num; cout<<"num="<<a;}原创 2020-08-08 09:57:26 · 263 阅读 · 0 评论