![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++基础的系统学习
文章平均质量分 85
小小哇牛
jiayou
展开
-
C++编译器是如何管理类和对象的,类的成员函数和成员变量
1、C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类。从计算机的角度,程序依然由数据段(栈区内存)和代码段(代码区内存)构成。那么C++编译器是如何管理类、对象、类和对象之间的关系具体的说:具体对象调用类写的方法,那,c++编译器是如何区分,是那个具体的类,调用这个方法那?看下面一段程序结果// asas.cpp : 定原创 2016-06-25 16:35:22 · 1938 阅读 · 0 评论 -
字符串练习
本题目的:只有把一个目标练习到极致,你才能达到高屋建瓴的层次!行百里者半于九十。【一个老程序员告诉你:】用指针控制字符串按要求检索查找训练,是属于快速突破指针编程最有效方法。青春无悔努力吧! 用两个辅助指针变量挖字符串,是每一个C程序员必备的能力。也是突破指针编程最有效方法。 有一个字符串符合以下特征(“abcd11111abcd2222abcdqqqqqabcd11111原创 2016-06-20 14:38:34 · 1156 阅读 · 0 评论 -
指针数组和数组指针
本想自己总结,单在别的论坛上看的非常不错,就转过来了,可参见原文http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。指针数组:array of poin转载 2016-06-18 23:27:42 · 346 阅读 · 0 评论 -
数组指针的用法
接着上次的继续搞void main(){ int i = 0, j = 0, tmp = 0; int a[5] = {3,4,5,6,2}; // myarray数组首元素的地址 // myarray是一个常量指针 // myarray是一个数组指针 int myarray[3][5]; // 直接定义一个数组指针 int (*p)[5] = &a;原创 2016-06-18 12:00:19 · 1131 阅读 · 0 评论 -
C++数组类型基础及数组指针基础
技术忙点:1)数组首元素的地址和数组地址是两个不同的概念2)数组名代表数组首元素的地址,不是整个数组的地址例如a[10],a表示首元素的地址,&a才表示整个数组的地址。a和&a代表的数据类型不一样,&a代表数组类型,a代表数组元素类型原创 2016-06-18 01:09:57 · 386 阅读 · 0 评论 -
C/C++二级指针的三种模型(一)
C/C++二级指针的三种模型的三种模型之一是,先给出来,下次在进行具体研究void printfArr(char **arrayPtr, int nLength){int i = 0;for (; i {printf("%s\n", arrayPtr[i]);}}void sortArrayStr(char **arrayPtr, int n原创 2016-06-17 14:57:17 · 2922 阅读 · 0 评论 -
C++实现键值对
键值对(”key = valude”)字符串,在开发中经常使用;要求1:请自己定义一个接口,实现根据key获取valude;40分要求2:编写测试用例。30分 要求3:键值对中间可能有n多空格,请去除空格30分注意:键值对字符串格式可能如下: “key1=valude1”“key2 = valu原创 2016-06-17 13:34:36 · 11917 阅读 · 0 评论 -
C++字符串
有一个字符串”1a2b3d4z”,;要求写一个函数实现如下功能,功能1:把偶数位字符挑选出来,组成一个字符串1。功能2:把奇数位字符挑选出来,组成一个字符串2。int getStr1Str2(const char *souce, char *buf1, char *buf2){char *buf1Tmp = buf1;char *buf2Tmp = buf2;原创 2016-06-17 13:25:08 · 359 阅读 · 0 评论 -
深入系统学习C/C++
毕业后两年内的时间一直都是从事的C++方面的软件开发,可以说有一定的经验,但是每当去面试的时候,面对面试官提出的一些基本的C++题目还是有些吃力,所以决定静下心来从新开始学习C++,废话不多说。有一个字符串开头或结尾含有n个空格(” abcdefgdddd ”),欲去掉前后空格,返回一个新字符串。有两种写法,第一种int trimSpace(const char *in原创 2016-06-17 13:09:48 · 1509 阅读 · 0 评论 -
字符串字串出现的次数
有一个字符串符合以下特征(” "abcd11111abcd2222abcdqqqqq"”),要求写一个函数(接口),输出以下结果1) 求字符串字串(“abcd”)出现的次数,并把结果传出;2) 把字符串替换成(dcba11111dcba2222dcbaqqqqq),并把结果传出。int getRestbuf(const char* buf1, int *count, const原创 2016-06-17 13:48:40 · 676 阅读 · 0 评论 -
以逗号分割字符串,形成二维数组,并把结果传出C/C++
有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果1) 以逗号分割字符串,形成二维数组,并把结果传出;2) 把二维数组行数运算结果也传出。int getStrArray(const char *src, char dst[100][100]){int i = 0,j = 0,原创 2016-06-17 14:32:05 · 2418 阅读 · 0 评论 -
栈的学习和应用
首先栈的实现可以借助于线性表,因为栈就是特殊的线性表,只支持一端进出,先进先出,先给出线性表实现代码#ifndef _MYLINKLIST_H_#define _MYLINKLIST_H_typedef void LinkList;/*typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{原创 2016-07-01 10:01:48 · 354 阅读 · 0 评论 -
队列的学习
队列的实现和栈类似,队列也是一种特殊的线性表,先进先出先贴上顺序存储的队列#ifndef __MY_SEQLIST_H__ #define __MY_SEQLIST_H__// #define ERR_BASE 0// #define ERR_PARAM ERR_BASE -1;typedef void SeqList;typedef void SeqListNod原创 2016-07-01 10:07:35 · 557 阅读 · 0 评论 -
从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从键盘
这是今天在百度知道上看到的问题,一开始感觉很简单,就感觉没有难度只是scanf,printf之类的,后来实在是无聊就想着回答一下吧,但是当我回答的时候发现这道题并不是那么简单,他需要对内存理解的很透彻的情况下才可以做出来,首先第一个难点在于他是动态的二维数组,我想了第一个解决办法是这样的#include "stdio.h"#include "stdlib.h" int main(){原创 2016-07-01 17:20:11 · 12696 阅读 · 2 评论 -
详解C/C++函数指针声明
要理解一个C程序,仅仅理解组成该程序的符号是不够的。程序员还必须理解这些符号是如何组合成声明、表达式、语句和程序的。 我们先来看看下面的一个语句:1( *( void(*)())0)(); 这是当计算机启动时,硬件将调用首地址为0位置的子例程。像这样的表达式恐怕会令每个C转载 2016-09-01 10:42:44 · 827 阅读 · 0 评论 -
结构体练习
有如下结构体模型://声明一个结构体类型struct _itTeacher{ char name[32]; char tile[32]; int age; char addr[128];}; struct _itAdvTeacher{原创 2016-06-20 15:17:50 · 1231 阅读 · 0 评论 -
C语言动态库的使用
受限创建一个win32的控制台DLL项目,添加.c文件和.h文件,需要导出的接口#include "stdlib.h"#include "stdio.h"#include "string.h"typedef struct _SCK_HANDLE { char version[16]; char serverip[16]; int serverport; char *pB原创 2016-06-22 10:58:09 · 1384 阅读 · 0 评论 -
C++运算符重载
1、先做技术推演#include "iostream"using namespace std;原创 2016-06-25 17:58:52 · 353 阅读 · 0 评论 -
C++知识点记录extern全局变量
定义和声明都用一个单独的.h和cpp文件// demo01_extern.h#pragma once//extern 修饰全局变量,提升该变量可以 跨文件extern int g_aa ;extern int g_aa2;extern int g_aa3;//把所有的全局变量都放在一块,统一管理//dingyi 只定义一次int g_aa = 10;int g_aa原创 2016-06-26 14:46:51 · 341 阅读 · 0 评论 -
C++多态原理和虚函数的知识后记录
1、多态的实现效果多态:同样的调用语句有多种不同的表现形态;多态实现的三个条件 有继承、有virtual重写、有父类指针(引用)指向子类对象。多态的C++实现 virtual关键字,告诉编译器这个函数要支持多态;不要根据指针类型判断如何调用;而是要根据指针所指向的实际对象类型来判断如何调用多态的理论基础 动态联编PK静态联编。根据实际的对象类型原创 2016-06-26 17:37:02 · 391 阅读 · 0 评论 -
c字符串题,实现首字母小写转大写
/*1 编写一个业务函数,实现字符串(前后各有三个空格,单词前后也均有空格)" i am student, you are teacher " ,各个单词首字符大写,结果如下" I Am Student, You Are Teacher " ,要求1:实现所有接口 70要求2:写出测试程序 30*/第一个是我自己写的,第二个是老是交的in原创 2016-06-27 11:16:04 · 4326 阅读 · 0 评论 -
c语言 实现按行读取文件。把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出
/*2 编写一个业务函数,实现按行读取文件。把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出。函数原型有两个,任意选择其一要求1:请自己任意选择一个接口(函数),并实现功能;70分要求2:编写测试用例。30分要求3:自己编写内存释放函数*/#include "stdlib.h"#include "stdio.h"#include "string.h"原创 2016-06-27 11:27:34 · 1657 阅读 · 1 评论 -
c语言大小写转化
今天学习汇编语言的时候遇到一个大小写转换问题,由于汇编中没法判断当前字符是大写还是小写,所以没法决定是加32还是减去32,但是ASICII有个规律,那就是大写字母的二进制位的第六位都是1,小写字母的第六位都是0,其他的都一样,所以可以直接and 0xDF进行大写转换,or 0x20进行小写转换,同样的在c语言中也可以这样去处理大小写转换,如下代码,已测试,完全正确。#include "stdl原创 2016-06-27 18:04:29 · 1637 阅读 · 0 评论 -
函数指针基础的学习记录
昨天学习了函数指针,今天做个复习和记录首先和函数指针比较类似的是数组指针,和数组类型,先回顾一下,如下是定义数组类型和数组指针类型typedef int (AyyayVec3)[3]; // 定义数组类型AyyayVec3 array这样写其实等价于int array[3];typedef int (*pArrayVec3)[3]; //定义数组指针类型pArray原创 2016-06-28 10:11:46 · 330 阅读 · 0 评论 -
利用函数指针实现动态库的动态调用——函数指针正向调用法
动态库的lib文件里面保存了动态库dll中函数的起始地址,如果不用lib文件,而是我们自己手动通过函数指针来调用可以这样//客户端初始化 获取handle上下typedef int (*CltSocketInit)(void **handle ); //客户端发报文typedef int (*CltSocketSend)(void *handle , unsigned char原创 2016-06-28 10:37:46 · 2643 阅读 · 0 评论 -
打印错误日志,供以后参考
供以后查阅//itcastlog.h 日志头文件#ifndef _ITCAST_LOG_H_#define _ITCAST_LOG_H_/*#define IC_NO_LOG_LEVEL 0#define IC_DEBUG_LEVEL 1#define IC_INFO_LEVEL 2#define IC_WARNING_LEVEL 3#define IC_ERR原创 2016-06-28 15:38:34 · 1648 阅读 · 0 评论 -
泛型编程,摸板函数模板类
1、泛型编程基础泛型函数#include "iostream"using namespace std;void swap(int &a, int &b){ int c ; c = a; a = b; b = c;}void swap(float &a, float &b){ float c ; c = a; a = b; b = c;}void ma原创 2016-06-29 10:49:21 · 437 阅读 · 0 评论 -
线性表顺序存储方式实现,表和前台业务数据的分离
先贴出前台测试代码#include "stdlib.h"#include "stdio.h"#include "string.h"#include "seqlist.h"typedef struct _Teacher{ char name[64]; int age ; int buf;}Teacher;void main(){ int ret = 0, i = 0原创 2016-06-29 10:31:31 · 451 阅读 · 0 评论 -
C语言和C++的几点不同之处,const,register,三目运算符,&引用
1、先说register吧在c++中:(1)register 关键字无法在全局中定义变量,否则会被提示为不正确的存储类。(2)register 关键字在局部作用域中声明时,可以用 & 操作符取地址,一旦使用了取地址操作符,被定义的变量会强制存放在内存中。在c中:(1)register 关键字可以在全局中定义变量,当对其变量使用 & 操作符时,只是警告“有原创 2016-06-24 09:45:45 · 554 阅读 · 0 评论 -
C语言结构体高级篇,linux内核链表
昨天初步学习了linux内核链表,记录一下首先要先知道结构体的一个很隐秘的知识点,如下:#include "stdlib.h"#include "stdio.h"#include "string.h"typedef struct Worker{ char name[30]; int nNumber;};int main(){ struct Worker* pwork原创 2016-06-23 10:46:23 · 1982 阅读 · 0 评论 -
C语言链表的一般操作,创建,插入,遍历,删除
#include "stdlib.h"#include "stdio.h"#include "string.h"typedef struct Node{ int data; struct Node *next;}SLIST;// 尾插法创建链表SLIST *Creat_SList(){ //1 创建头结点并初始化 SLIST *pHead = NULL; SLIST原创 2016-06-22 14:32:15 · 757 阅读 · 0 评论 -
MD5 标准C++实现
工作中需要用到MD5进行加密,在网上搜的一个代码,亲测可用,留作以后需要#ifndef MD5_H#define MD5_H// Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All// rights reserved.// License to copy and use this software is g转载 2017-07-21 20:32:23 · 635 阅读 · 0 评论