
C/C++
HumorDeCraftsman
这个作者很懒,什么都没留下…
展开
-
c26-多维数组和多维指针
1.指向指针的指针指针变量在内存中会占用一定的空间。可以定义指针来保存指针变量的地址值。指针在本质上也是变量对于指针也同样存在传值调用与传址调用案例:重置动态空间的大小(指针可以用来解决 ”单向传递” 的问题)#include <stdio.h>#include <malloc.h>int reset(char**p, int size,...原创 2019-09-13 14:35:12 · 233 阅读 · 1 评论 -
c27-数组退化(数组参数和指针参数分析)
为什么C语言的数组参数会退化为指针?退化的意义:二维数组参数等价关系代码分析:#include <stdio.h>void access(int a[][3], int row) //由于数组会退化,所以必须提供长度信息{ int col = sizeof(*a) / sizeof(int);//求列数 int i = 0; int j...原创 2019-09-13 15:15:19 · 172 阅读 · 0 评论 -
c28-函数与指针分析
函数类型函数指针实例分析:函数指针的本质与使用#include <stdio.h>typedef int(FUNC)(int);int test(int i){ return i * i;}void f(){ printf("Call f()...\n");}int main(){ FUNC* pt = test...原创 2019-09-13 17:33:17 · 138 阅读 · 0 评论 -
c24-C语言中的字符串
c语言中的字符串案例分析:#include <stdio.h>#include <malloc.h>int main(){ char s1[] = { 'H', 'e', 'l', 'l', 'o' }; char s2[] = { 'H', 'e', 'l', 'l', 'o', '\0' }; const char* s3 = "Hel...原创 2019-09-14 16:57:25 · 225 阅读 · 0 评论 -
c29-动态内存分配
为什么使用动态内存分配#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>struct Product{ char name[128]; int price;};struct Product pro[1000];struct Product sale;...原创 2019-09-14 17:15:27 · 144 阅读 · 0 评论 -
c30-程序中的三国天下(c31-程序中的内存布局)
程序中的栈程序中的堆程序中的静态存储区小结 程序中的内存布局1.程序文件的一般布局初始化的 全局变量,静态变量 存储在 .data section未初始化的 全局变量,静态变量 存储...原创 2019-09-14 21:03:27 · 135 阅读 · 0 评论 -
c32-野指针和内存操作分析
初始野指针C语言中没有任何手段可以判断一个指针是否为野指针!野指针的由来1.局部指针变量没有被初始化#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>struct Student{ char* name; int number;};int ma...原创 2019-09-15 12:07:11 · 292 阅读 · 0 评论 -
c34-可变参数分析与宏分析
目录可变参数如何编写一个可以计算n个数平均值的函数?#include <stdio.h>#include <stdarg.h>float average(int n, ...){ va_list args; int i = 0; float sum = 0; va_start(args, n); ...原创 2019-09-15 21:55:47 · 285 阅读 · 0 评论 -
c5-const和volatile分析
目录 const修饰变量 const修饰数组 const修饰指针 const修饰函数参数和返回值 深藏不漏的volatile 课后思考原创 2019-09-15 22:30:17 · 268 阅读 · 0 评论 -
c20-#和##运算符使用解析
#运算符用于在预编译期将宏参数转换为字符串#include <stdio.h>#define CONVERS(x) #xint main(){ printf("%s\n", CONVERS(Hello world!)); printf("%s\n", CONVERS(100)); printf("%s\n", CONVERS(while...原创 2019-09-16 10:13:14 · 196 阅读 · 0 评论 -
c25-指针数组和数组指针分析
定义数组类型 typedef type(name)[size];例如:数组类型: typedef int(AINT5)[5]; typedef float(AFLOAT10)[10];数组定义: AINT5 iArray; AFLOAT10 fArray; int array[5]; int matri...原创 2019-09-12 22:24:00 · 114 阅读 · 0 评论 -
c9-接续符和转义符
C语言中的接续符(\)是指示编译器行为的利器#include <stdio.h>#def\ine MAX\255int main(){/\/这是\\注释i\n\t\ *\ p\= \ NULL;printf("%0X\n", p); return 0;}等价于:#include <stdio.h>#defi...原创 2019-09-12 12:26:05 · 215 阅读 · 0 评论 -
memset的用法
原型:extern void *memcpy(void *dest, void *src, unsigned int count);用法:#include <string.h>功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。常见错误:#include<stdio.h>...原创 2019-04-04 11:12:40 · 748 阅读 · 0 评论 -
C语言函数输入/输出【IN/OUT】参数讲解
数据结构是编程的核心,还是算法是编程的核心,这一直是一个争论的话题。正因为如此,说明了数据结构与算法在编程领域的核心地位。------程序员苏格拉没有底与糕点苏格拉没有底是一个伟大的哲学家,他很喜欢吃一家店的现做的糕点,但是他每天都忙与奔波,所以不能每天都吃到糕点。一天,他突然想到一个好办法。他每天路过糕点店的时候,会把糕点钱和一张写有地址的纸条留给糕点店,糕点店做好蛋糕之后就会把蛋糕放到...转载 2019-04-09 17:39:51 · 15846 阅读 · 1 评论 -
动态链接库DLL的制作
掌握全局思维:动态链接库的作用:案例教程(VS2017为例):头文件和 Dll 都不可缺少:参考链接:https://blog.youkuaiyun.com/m0_37170593/article/details/76445972参考连接:https://blog.youkuaiyun.com/zhunju0089/article/details/80906...原创 2019-04-19 19:11:53 · 750 阅读 · 0 评论 -
(C/C++)面试题1
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;void test01() { int a[2][5] = { {2,3,4,5,6},{7,8,9,10,11} }; int *ptr = (int *)(&a + 1);...原创 2019-08-28 19:37:07 · 171 阅读 · 0 评论 -
C语言中#ifdef,#ifndef和#endif的作用
1、用于注释掉一段代码我们自己编写程序的时候,需要看到一系列的调试代码,但是发给客户的时候,客户可不希望看到什么什么OK的代码,所以我们希望能很容易地注释掉这段代码。这时需要用到预处理指令 #ifdef 和 #endif :#include <stdio.h>#define CONFIG_DEBUGint main(){ FILE *fp; fp=f...原创 2019-08-28 19:38:34 · 862 阅读 · 0 评论 -
宏定义[面向对象思想]
/* lw_oopc.h */#ifndef LOOPC_H#define LOOPC_H#include <malloc.h>#define CLASS(type)\typedef struct type type; \struct type#define CTOR(type) \void* type##Setting(type*); \void* type...原创 2019-08-28 20:51:54 · 416 阅读 · 0 评论 -
extern关键字的妙用
程序1:struct.h文件#pragma once#ifndef _STRUCT_H_#define _STRUCT_H_typedef struct string{ int b; int a;}STRING;//STRING arr[2]; //注释掉void fun();#endifstruct.c 文件#incl...原创 2019-09-05 18:24:46 · 130 阅读 · 0 评论 -
c1-基本数据类型
#include <stdio.h>int main(){ char c = 0; short s = 0; int i = 0; float j = 0; double k = 0; long int h = 0; long long int g = 0; printf("%d, %d\n", siz...原创 2019-09-12 09:08:20 · 400 阅读 · 0 评论 -
c10-单引号和双引号
C语言中的 单引号 用来表示 字符常量C语言中的 双引号 用来表示 字符串常量混肴概念的代码修改代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main(){ char c = ' '; while (c == '\t' || c ...原创 2019-09-12 10:25:54 · 197 阅读 · 0 评论 -
c8-注释符号的重要性
注释符号:#include <stdio.h>int main(){ int/*...*/i; char* s = "abcdefgh //hijklmn"; //Is it a \ valid comment? in/*...*/t i; //是错误的 return 0;}漂亮的程序注释:注释应该准确易懂,防止...原创 2019-09-12 11:28:14 · 184 阅读 · 0 评论 -
c15-编译过程简介
编译器做了什么?1.预编译2.编译3.汇编4.链接器的意义链接器的主要作用是吧各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接。5.静态链接和动态链接静态链接所用时间少,占空间动态链接所用时间多,省空间小结编译器将编译工作主要分为预处理,编译和汇编三部链接器的工作是把各个独立的模块链接为可执行程序...原创 2019-09-16 11:17:26 · 167 阅读 · 0 评论