指针数组

C/C++ 笔记、Python 笔记、JavaWeb + 大数据 笔记

▼魔方 西西 提交于 2019-11-30 05:46:44
Keras、PyTorch、MXNet 用户画像 C、C++笔记 JavaWeb+大数据笔记 CDH 6、CDH5 Python笔记 https://pan.baidu.com/s/1OBd1rbwGx0F8YnefM7R0Uw 提取码0hal https://pan.baidu.com/s/1TKNZ6TtDxDtDUnezrcXJ8Q 提取码2ber https://pan.baidu.com/s/1_XWMwcoNuDPdE3xkluo08A 提取码b12m https://pan.baidu.com/s/1eW8YSrasGiTXpBFSSJd78Q 提取码7aeu https://pan.baidu.com/s/1xi_3T6Nw__Sy-QQaN29O4Q 提取码1gcs 1.CDH 6 的安装和使用 、CDH5安装 https://blog.csdn.net/zimiao552147572/article/details/87190368 https://blog.csdn.net/zimiao552147572/article/details/94158217 2.用户画像 https://blog.csdn.net/zimiao552147572/article/details/88425850 3.Spark 实时处理 https://blog.csdn.net

[C++学习]数组

浪子不回头ぞ 提交于 2019-11-30 05:41:20
一、描述 数组是一种类似于vector的复合类型,但与vector不同的是,数组的大小确定不变,不能随意向数组添加元素。 二、定义和初始化 数组声明形如a[b],b必须为常量表达式并且大于0。 unsigned s = 4; // 不是常量表达式 constexpr unsigned size = 4; // 常量表达式 int a1[4]; // 含有4个整数的数组 int a2[s]; // 错误写法: s不是常量表达式 int a3[size]; // 含有4个整数的数组 默认情况下,数组的元素被默认初始化,默认初始化会令数组含有未定义的值。定义时必须确定数组类型,不能使用auto关键字。与vector一样,数组是一个对象,所以不存在引用的数组。 显式初始化 int a1[3] = {1, 2, 3}; // 含3个元素,分别是1,2,3 int a2[] = {1, 2, 3}; // 含3个元素,分别是1,2,3 int a3[5] = {1, 2, 3}; // 含5个元素,分别是1,2,3,0,0 string a4[3] = {"hello", "world"}; // 含3个元素,分别是"hello","world"和"" 字符数组 字符数组有一种额外的初始化形式:可以利用字符串字面值对此类字符串进行初始化。这种方法会在字符串字面值结尾处多一个空字符'\0'

数据结构实现(顺序表)

天涯浪子 提交于 2019-11-30 05:24:57
#include<stdio.h> //数据结构之顺序表 /*原理:地址连续的存储单元依此存储线性表的元素 基本运算:插入 删除 查找 排序 要点:结构的定义很重要,所有的操作都是建立在数据结构之上的。 */ /*顺序表结构体定义:*/ //def数据最大长度 #define Maxsize 100 //定义数据元素类型,可以适应更多类型 typedef int Datatype; //定义顺序表类型,只是定义了一个类型,而不是变量 typedef struct SeqList//此处的SeqList可以不要 { Datatype data[Maxsize]; int last; }SeqList; SeqList InitSlist() {//初始化顺序表 SeqList L;//通过函数调用来申请空间,创建变量 L.last = -1;//表示表空 return L; } void Creat_Slist(SeqList &L) {//创建顺序表,给data初步赋值 int flag;//标示数据规模 scanf("%d",&flag); for(int i=0;i<flag;i++) { scanf("%d",&L.data[i]); L.last++; } } int Getlength(SeqList &L) { return (L.last + 1); } int

数组和指针

我们两清 提交于 2019-11-30 04:38:34
int main() { char buf[] = "hello world"; char*p =(char*) "hello world"; system("pause"); return 0; } buf和p都是指针。 buf申请一个栈空间,复制常量区的数据到栈空间,p申请一个栈空间存指针,指针指向常量区 来源: https://blog.csdn.net/weixin_42206078/article/details/101079385

剑指offer

杀马特。学长 韩版系。学妹 提交于 2019-11-30 04:10:55
2. 单例设计模式 题目描述:设计一个类,只能生成该类的一个实例。 思路:非线程安全与线程安全 **所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。**具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法返回该类的实例。 https://www.cnblogs.com/tytr/p/6119573.html #这种实现方式线程安全且效率比较高。 public class Singleton { private static Singleton ourInstance ; public static Singleton getInstance ( ) { if ( null == ourInstance ) { synchronized ( Singleton . class ) { ourInstance = new Singleton ( ) ; } } return ourInstance ; } private Singleton ( ) { } } 3. 二维数组中查找目标值 题目:https://www.nowcoder.com/practice

面试官: 既然已经有数组了,为什么还要链表

血红的双手。 提交于 2019-11-30 03:50:53
面试官: 既然已经有数组了,为什么还要链表 本文发布于微信平台: 程序员面试官 超过20w字的「前端面试与进阶指南」可以移步 github 对于不少开发者而言,链表(linked list)这种数据结构既熟悉又陌生,熟悉是因为它确实是非常基础的数据结构,陌生的原因是我们在业务开发中用到它的几率的确不大. 在很多情况下,我们用数组就能很好的完成工作,而且不会产生太多的差异,那么链表存在的意义是什么?链表相比于数组有什么优势或者不足吗? 什么是链表 链表是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer). 从本质上来讲,链表与数组的确有相似之处,他们的相同点是都是线性数据结构,这与树和图不同,而它们的不同之处在于数组是一块连续的内存,而链表可以不是连续内存,链表的节点与节点之间通过指针来联系. 当然,链表也有不同的形态,主要分为三种:单向链表、双向链表、循环链表. 单向链表 单向链表的节点通常由两个部分构成,一个是节点储存的值 val ,另一个就是节点的指针 next . 链表与数组类似,也可以进行查找、插入、删除、读取等操作,但是由于链表与数组的特性不同,导致不同操作的复杂度也不同. 查找性能 单向链表的查找操作通常是这样的: 从头节点进入,开始比对节点的值,如果不同则通过指针进入下一个节点 重复上面的动作

指针

心不动则不痛 提交于 2019-11-30 02:33:33
一、地址和指针 1.1内存 内存由一系列连续的存储单元组成,每个存储单元都有计算机分配的 "编号" ——地址 定义一个变量,即是给变量分配从某一地址开始的若干存储单元,且通常以起始地址作为该变量的地址 注:内存空间的访问方式:通过变量名访问,通过地址访问 1.2针和指针变量 指针:一个变量的地址称为该变量的指针 指针变量:专门存放变量地址的变量(即指针)称为指针变量 二、指针变量 2.1始化 存储类型 数据类型 *指针名 = 初始地址 如 int* a_ptr = &a; 注: 用变量地址作为初值时,该变量必须在指针初始化之前声明过,且变量类型应与指针类型一致 可以用一个已有合法值的指针去初始化另一个指针变量 不要用一个内部非静态变量去初始化 static 指针 2.2赋值 1、语法形式 指针名 = 地址 注:"地址"中存放的数据类型与指针类型必须相等 2、赋值为地址常量或变量,不能是普通整数 通过地址运算“&”求得已定义的变量和对象的起始地址 动态内存分配成功时返回的地址 3、指针空值nullptr C++11 使用 nullptr 关键字,是表达更准确,类型安全的空指针 4、允许定义或声明指向 void 类型的指针 该指针可以被赋予任何类型对象的地址,如:void* general ; #include <iostream> using namespace std; int

C++传值和传引用

烈酒焚心 提交于 2019-11-30 00:37:10
传值参数 首先你肯定明白一个道理:当初始化一个非引用类型的变量时,初始值被拷贝给变量,此时对变量的改动不会涌向初始值 int n = 0; int i = 1; // i是n的副本 i = 42; // i的值改变,n的值不改变 传值参数的机理完全一样,由于 每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化 ,所以 函数对形参做的所有操作不会影响实参 ,如果我们想让函数改变我们传入的实参本身们就可以用到 指针形参 访问函数外部对象 指针形参 先看一段代码: int n = 0; int i = 1; int *p1 = &n; //p1指向n int *p2 = &i; //p2指向i *p1 = 42; //n的值改变,p1不变 p1 = p2 //现在p1指向了i,但是i和n的值都不变 当执行指针拷贝操作时,拷贝的是指针的值(地址),拷贝之后,两个指针是不同的指针,因为指针可以使我们间接地访问所指向的对象,所以通过指针可以修改对象的值 指针形参也差不都 // 接受一个int类型的指针,然后将指针所指向的对象置0 void reset(int* ip) { *ip = 0; // 改变指针ip所指向对象的值 ip = 0; // 只改变了ip的局部拷贝,实参未被改变 } void reset(int i) { i = 0; } int main() { int

【C\\C++笔记】数组指针越界

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 22:16:06
指针越界,t的数组指针越界,修改了c的内容。 使用指针时,必须规定指针移动的范围 #include <iostream> using namespace std ; int main (){ char c [ 11 ] = "123456" ; char t [ 11 ]; for ( int i = 0 ;i < 20 ;i ++ ){ t [i] = 'a' + i; } cout << c << endl; return 0 ; } 输出:PS E:\桌面> cd "e:\桌面\" ; if ($?) { g++ test.cpp -o test } ; if ($?) { .\test } lmnopqrst 来源: https://www.cnblogs.com/LPworld/p/11537491.html

C++数组、指针、动态内存分配

非 Y 不嫁゛ 提交于 2019-11-29 21:38:24
二维数组作为函数的参数问题 #include<iostream> using namespace std; void print(int n,int a[][10]){//形参a是一个n行二维数组的首地址 for(int i=0;i<n;i++){ for(int j=0;j<10;j++){ cout<<a[i][j]<<" "; } cout<<endl; } } int main(){ int k[3][10]={{0,1,2,3,4,5,6,7,8,9}, {1,2,3,4,5,6,7,8,9,10}, {2,3,4,5,6,7,8,9,10,11}}; print(3,k);//传入二维数组的首地址 }//另外函数定义时也可以这样定义 void print(int n,int *a[10]),代表a是一个指向二维数组的指针 和一维数组作为函数的参数一样,遵循的原则是形参的格式和实参的格式相同,形参是二维数组的首地址,则调用函数的时候传入函数的也是二维数组的首地址。 关于指针的一些细节 const int * point 和int * const point 的区别 const int * point 可以按照“断句”的方法来看 ( (const int) * point )指的是指向const int (int常量)的指针 int * const point 同样,“断句