![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 76
Strivee_
厚积薄发,天助自助者也!
Stay hungry,stay young!
展开
-
C语言----动态内存分配四函数
前面中我们了解到:int n;int arr[n];这样定义数组是不可取的,不能用此方法给数组分配动态内存,那怎么样才能实现这种可能呢?接下来我将关于动态内存的知识做以下总结。有关动态内存的函数有四个,分别是malloc( )、calloc( )、free( )、realloc( )。ANSI(美国国家标准协会)标准建议应添加头文件#include <stdlib.h>,但许多C编译系...原创 2018-03-31 02:24:59 · 367 阅读 · 0 评论 -
用两种方法(先序中序与中序后序)遍历二叉树以及创建二叉树的七种方法
#include <iostream>#include<queue>using namespace std;typedef char ElemType;typedef struct BtNode //定义二叉树节点{ BtNode *leftchild; BtNode *rightchild; ElemType data;}BtNode, *...原创 2019-01-12 17:43:28 · 312 阅读 · 0 评论 -
求a与*s的值(关于指针与解引用)
void Fun(int *p){ *p = 100; int x = 10; p = &x;}int main(){ int a = 0; int *s = &a; Fun(s); cout<<a<<" "<<*s<<endl; //100 100 return 0;}原创 2019-01-13 00:00:12 · 194 阅读 · 0 评论 -
【C语言】六种基本数据类型&默认类型转换
C语言包含的数据类型:char、short、int、long、float、double这六个关键字代表C语言中的6种基本数据类型。在不同的系统上,这些类型占据的字节长度是不同的。 数据类型 32位系统 64位系统 char 1 1 short...原创 2019-07-09 20:05:14 · 4057 阅读 · 0 评论 -
字符编码ASCII、Unicode、UTF-8、UTF-16等的区别
字符编码: 计算机只能处理数字,如果要处理文本文件就必须先把文本转化成数字才能处理。最早的计算机在设计的时候采用8个比特(bit)作为一个字节(byte)。所以一个字节能表示的最大整数就是255 ((2^8) - 1 )。ASCII编码: 最早的计算机字符编码为ASCII(美国信息互换标准代码),只有127个字母被编码到计算机里,也就是大小写英文字母、数字和...原创 2019-07-09 22:04:04 · 472 阅读 · 0 评论 -
【C语言】逻辑位移和算数位移的区别
逻辑位移:逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。算数位移:算术移位 就需要分有符号型值和无符号型值对于无符号型值,算术移位等同于逻辑移位。而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1。C编译器采用的是哪一种?答:在汇编指令中,shl和shr表示逻辑左移和逻辑右移,sal和sar表示算术左移和算术右移。首先让我们来看...原创 2019-07-09 22:30:43 · 1449 阅读 · 0 评论 -
【C语言】for和while循环的区别
1. 从应用场景来看:for循环用于已知循环次数;while循环适用于未知循环次数。2. 从内存角度来看:局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时释放掉,不浪费空间。若使用循环之后还想去访问循环语句中控制那个变量,用while循环。...原创 2019-07-10 09:49:14 · 8907 阅读 · 0 评论 -
【C语言】switch的实现 && switch与if-else的执行效率比较
(一)switch的实现原理通俗的说,先在内存中把swich里面的case值按照顺序排一个表,当没有那个值时,它对应的就是default.具体地说,switch...case会生成一份大小(表项数)为最大case常量+1的跳表,程序首先判断switch变量是否大于最大case 常量,若大于,则跳到default分支处理;否则取得索引号为switch变量大小的跳表项的地址(即跳表的起始地址+...原创 2019-07-10 10:43:30 · 4247 阅读 · 0 评论 -
C语言中数字的处理问题(位数统计、正逆序输出)
通过近期对C语言的学习,我基本掌握了若干种对数字进行处理的方法,分别是位数统计、正序逆序输出(n默认为十进制数,所以结合10对n进行操作,若n为十六进制数,则对其结合16进行必要的操作)。由于本人是C语言初学者,其中难免会有缺点或错误,热忱欢迎同行指正。一、位数统计任意给出一个整数n,判断出它的位数。关于这个问题有两种方法——“丢低位”和“丢高位”。丢低位即对整数n进行除以10的循环操作,把每次除...原创 2018-03-10 00:45:18 · 1674 阅读 · 0 评论 -
C语言----求两数最大公约数和最小公倍数
一、求两个数的最大公约数算法1:普通法先找出m和n的所有因数,然后找出符合要求的最大值。#include<stdio.h>#include<math.h>int GreatestComDiv(int m,int n){ int tmp; //tmp为最大公因数 for(int i;i<=m;i++) //i为m、n的所有公因数 {...原创 2018-03-10 23:49:43 · 776 阅读 · 0 评论 -
C语言----数组(一维数组)
近期学习了一维数组的有关知识,简单做以下总结:一、定义一个一维数组,如:(1)int arr[10]={1,2,3,4,5,6,7,8,9,10}; //定义时,“[ ]”中的数字表示数据元素的个数,也称为数组的长度(2)int arr[10]; // 数组未初始化(没有进行赋值),其中每个元素arr[0]~arr[9]都取随机值(3)i...原创 2018-03-12 22:07:51 · 2501 阅读 · 0 评论 -
C语言----const的用法
关于const的用法做以下总结:1、定义常变量const int a = 10; int a = 10; // 可读可写 int b = a; //a做右值 a = 100; //a做左值 //左值:放在赋值“=”符号左边,左值用写权限 const int ca = 100; // 只读变量(不能写,不能做左值) ca = 200; //error,ca不可做左值 const ...原创 2018-03-29 00:08:32 · 127 阅读 · 0 评论 -
C语言----(杨辉三角)
用C语言编程打印出杨辉三角的前10行。如下图所示:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1 ... ...解法1:(1)由题可设一个10*10的二维数组来存放数据,如int arr[10][10];(2)观察杨辉三角形得出规律——第一列元...原创 2018-03-27 02:49:00 · 763 阅读 · 1 评论 -
C语言----(二维数组,复杂数据类型的判断)
一、二维数组的定义赋值1、定义一个三行四列的二维数组,如下:int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};int brr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};//数组arr与brr的初始化相同,但最好使用brrint crr[3][4] = {1,2,3,4,5}; //行优先,即第0行元素分别...原创 2018-03-27 01:45:02 · 1665 阅读 · 0 评论 -
C语言----经典问题(求进制,宏定义)
一、求几进制问题描述:题目中给出一个非十进制的算数表达等式,若等式成立,数应为几进制。如下:初级:问题1、如果在某系统中,等式15*4=112成立,则系统采用的是几进制? 答案:六进制方法一:传统笨办法。若有选项且数值不大,可以各个代入等式尝试,统一换成选项中的进制,看等式两边是否相等。此方法效率低,且不具有普遍性。方法二:方程法。设为n进制,得出:(x*(n^1)+5*(n^0))*(4*...原创 2018-03-18 00:04:43 · 494 阅读 · 0 评论 -
C语言----指针算术运算
指针算术运算分为指针加法运算和指针减法运算。一、指针加法运算这里对指针加常数(如int*p,p++)进行讨论指针加指针 非法假设指针+1有以下三种情况:1、加一个单元格 (正确)2、加一个字节3、加整个数组(没有意义)#include<stdio.h>int main(){ int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int *p = arr...原创 2018-03-17 22:54:32 · 454 阅读 · 0 评论 -
C语言----数组(字符数组)
软件中,文本处理比数字处理更重要,而处理文字时需要用到字符串,所以掌握字符串的知识很重要。字符串一定有‘\0’结尾,只有以‘\0’结尾的字符数组才能称为字符串。'\0'是字符串的标志,也是字符串结束的标志。一、字符串的定义 char arr[10]; char brr[5] = {'a','b','c','d','e'};//不是字符串,没有'\0' char crr[5] ...原创 2018-03-17 20:50:51 · 576 阅读 · 0 评论 -
C语言----指针(一)
在计算机的内存存储器中,拥有大量的存储单元。一般情况下,存储单元是以字节为单位进行管理的。为了区别内存中的每一个字节,就需要对每一个内存单元进行编号,且每个存储单元都有一个唯一的编号,这个编号就是存储单元的地址,称为内存地址。这样,当需要存放数据时,即可在地址所标识的存储单元中存放数据。当需要读取数据时,根据内存单元的编号或地址即可找到所需的内存单元。根据内存地址就可以准确定位到对应的内存单元,因...原创 2018-03-12 23:00:28 · 184 阅读 · 0 评论 -
程序的编译链接运行原理
程序编译运行过程可以分解为4个步骤:预处理,编译,汇编,链接。Linux下的相关命令:预处理: gcc -E main.c -o main.i编译:gcc -Smain.i -o main.s 汇编: gcc -c main.s-o main.o链接: gcc -o mainmain.o...原创 2019-07-20 18:29:05 · 333 阅读 · 0 评论