指针

c++中指针作为函数参数的详细理解

一笑奈何 提交于 2020-01-21 10:08:06
在C语言中,函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。 像数组、字符串、动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合。 有的时候,对于整数、小数、字符等基本类型数据的操作也必须要借助指针,一个典型的例子就是交换两个变量的值。 有些初学者可能会使用下面的方法来交换两个变量的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> void swap( int a, int b){ int temp; //临时变量 temp = a; a = b; b = temp; } int main(){ int a = 66, b = 99; swap(a, b); printf ( "a = %d, b = %d\n" , a, b); return 0; } 运行结果: a = 66, b = 99 从结果可以看出,a、b 的值并没有发生改变,交换失败。这是因为 swap() 函数内部的 a、b 和 main() 函数内部的 a、b 是不同的变量,占用不同的内存,它们除了名字一样

关于java返回值对象BO设置初始值的问题

China☆狼群 提交于 2020-01-21 04:41:39
最近在项目中创建返回对象BO时,会自动生成初始的默认值,例如: private String idCard = null; private Long province = -1l; private Long city = -1l; private Long district = -1l; private Integer isAdministrator = -1; 原因是 在后续使用 BO对象.getCity().toString(); 这种操作时,如果值为null,会报空指针异常.... 避免空指针时,也可以在get()方法中使用三目运算符进行判断一下 public Integer getStatusId() { return statusId==null?-1:statusId; } 特此写下记录一下. 来源: CSDN 作者: lettuce_ 链接: https://blog.csdn.net/lettuce_/article/details/104054631

数组指针等价于二维数组

☆樱花仙子☆ 提交于 2020-01-21 03:02:25
数组指针:指针指向了一个数组 指针数组:数组中存储的为,指针 #include <stdio.h> //void fun(char a[][20],int n)直接传二维数组 void fun(char(*a)[20], int n)//数组指针 { int i; for (i = 0; i < n; i++) scanf("%s", a[i]); } int main(void) { int i; char s[3][20]; fun(s, 3); for (i = 0; i < 3; i++) printf("%s\n", s[i]); return 0; } 来源: CSDN 作者: captionyao 链接: https://blog.csdn.net/qq_38436175/article/details/104056458

指针初接触

拥有回忆 提交于 2020-01-20 21:48:43
指针是强大的C语言工具 指针指向地址 1. 定义指针:   使用指针之前要定义指针,与int, char, float类似的定义方式,不过要在定义类型和指针名之间加一个 * 号来表示定义的是指针,不带 * 号会导致定义的为变量而非对应型号的指针。     例子:int * pointer1; 就是定义了一个名为pointer1的int型指针,指针只能指向 其地址存放的是int型数据的变量。(“其”在这里指的是变量) 2. 初始化指针:   使用指针之前还要初始化指针,否则指针有可能会覆盖掉数据(我看的课程里都是这么说的,为避免可能的错误,我选择相信)     例子:int * pointer1 = NULL; 就是将指针pointer1初始化为空。 3. 指针赋值:   如果初始化指针时要指针有所指向,那么就要用地址符&来为指针确定指针指向的地址。     例子:int i; int * pointer1 = NULL; pointer1 = &i; 就是将指针pointer1指向整型变量 i 的地址。 4. 指针打印   读取指针的值也非常简单,就是指针自己本身加间接运算符 * 即可     例子:int i = 9; int * pointer 1 = NULL; pointer1 = &i; printf("%d", *pointer1); 指针指向的是地址

layout(poj3169)

不羁的心 提交于 2020-01-20 17:02:45
1,我似乎找到了些。。彻底学习解决这些东西的方法。。 2,嗯。。这个关键是你怎么能转换成图的思想。。图的问题。。打眼一看,我觉得一般人肯定看不出来。。 3,这个要用的BELLMANFORD算法,所以赶紧学学搞个模板。 4,学习知识最简单的方法就是拿个例子给你讲。 嗯,模板让我感觉奇奇怪怪的。 5,还好这代码一遍就过了 #include<iostream> #include<algorithm> #define max 1005 //const int max=1005; const int INF=100000005; using namespace std; int n,ml,md; int al[max],bl[max],dl[max]; int ad[max],bd[max],dd[max]; int d[max]; bool updated; void update(int& x,int y) { if(x>y) { x=y; updated=true; } } void bellmanford() { for(int k=0;k<=n;k++) { updated=false; for(int i=0;i+1<n;i++) { if(d[i+1]<INF) update(d[i],d[i+1]); } for(int i=0;i<ml;i++) { if(d[al[i]

C++-Record14—函数重载及和指针在一起使用的情况(C++对C的扩展)

倾然丶 夕夏残阳落幕 提交于 2020-01-20 12:42:21
目录 函数重载基础 函数重载概念 函数重载的判断标准 函数重载举例 函数重载的调用准则 函数重载的注意事项 函数重载与函数指针结合的情况 总体代码 函数重载应用场景比较多,后面的类的调用中,几乎都会用到。 函数重载基础 函数重载概念 函数重载(Function Overload):用同一个函数名定义不同的函数,当函数名和不同的参数搭配时函数的含义不同。 先举个例子: int func(int x) { return x; } int func(int a, int b) { return a + b; } int func(const char* s) { return strlen(s); } 以上三个函数的函数名称都是,func,但输入的参数个数、类型都不相同, 那这几个函数,就是函数重载。 函数重载的判断标准 函数重载至少满足下面的一个条件: 参数 个数 不同 参数 类型 不同 参数 顺序 不同 这里需要强调的是: 函数返回值不是函数重载的判断标准!!! 函数重载举例 void myPrint(int a) { printf("a:%d \n", a); } void myPrint(char *p) { printf("%s \n", p); } void myPrint(int a, int b) { printf("a:%d ", a); printf("b:%d \n

文件的有关操作

大城市里の小女人 提交于 2020-01-20 07:59:28
注意:在对文件进行具体操作时,必须遵守"**打开(创建)——读/写——关闭"**的操作流程。 常用的文件系统函数如下: 分类 函数名 打开文件 fopen() 关闭文件 fclose() 文件定位 fseek() (改变文件位置的指针位置) rewind()(使文件位置重新置于文件开头) ftell()(返回文件指针的当前值) 文件读写 fgetc()(从文件中读取一个字符) fgetc()(把字符输出到指定文件) fgets()(读取字符串) fputs()(把字符串输出到指定文件) getw()(从指定文件中读取一个字(int 型)) putw()(把一个字(int 型)输出到指定文件 fread()(从指定文件中读取该项数据) fwrite()(把数据写到指定文件) fscanf()(把指定文件按格式输入数据) fprintf()(按指定格式将数据写到指定文件中) 一.文件的打开与关闭 1.使用 fopen() 函数即可打开文件,它的用法为: FILE *fopen(char *filename, char *mode); filename 为文件名(包括文件路径),mode为打开方式,它们都是字符串。 文件的使用方式 意义 r(read) 读 w(write) 写 a(append) 追加 t(text) 文本文件,可省略不写 b(binary) 二进制文本 + 读和写

c++知识回顾

流过昼夜 提交于 2020-01-20 04:51:24
静下心来回顾学过的知识,随脑中思考到的书写。 相对c语言更多了引用、指针的更多使用,增加类的实现对象,类的构造函数和析构函数,类的继承等等。需要理解类继承过程中对象的构造函数和析构函数的执行顺序,虚函数的作用,友元函数等。当然还有异步、vector、map等,这些掌握不深,先不提。 类和对象 类是一个简单的对象的魔性,由变量和函数组成,对象使用这些变量来存放信息,调用这些函数来完成操作。 c++允许在类中可以声明常量,不充许对他进行赋值,否则出错;但声明前加static变为静态变量则可以。(具体原因需了解常量、静态变量的存储区域,以及类的存储区域) 构造函数和通用方法的区别: 构造函数名字和类名一样;系统在创建某个类的实例时会第一时间调用这个类的构造函数;构造函数永远不会返回任何值;每个类中至少有一个构造函数,如果没有在类中定义一个构造函数,编译器则会执行无参的默认构造函数。 this指针 静态成员函数不存在this指针,非静态成员函数存在this指针,“this指针”指向成员函数作用的对象,在成员函数执行的过程中,正是通过“this指针”才能找到对象所在的地址,因而也就能找到对象的所有非静态成员变量的地址。 逗号运算符 eg:x=(w1,w2,…,wn),对所有的wi表达式从左到右开始计算直到wn,最后将wn的值赋给x 字符串 在自定义的字符串中,‘\0’为字符串结束的标志

数组指针--指针指向一个数组

╄→尐↘猪︶ㄣ 提交于 2020-01-20 03:27:08
#include <stdio.h> #include <iostream> using namespace std; int main(void) { int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; int(*p)[10]; //先算小括号,p和*结合,属于指针类型,指针指向拥有十个int型元素的数组 //p=a;等价于int (*p)[10]=&a; p = &a; printf("%d\t%d\n", sizeof(p), sizeof(*p)); printf("%d\n", (*p)[3]); system("pause"); } #include <stdio.h> #include <iostream> using namespace std; int main(void) { char str[3][20] = { "hello","world","itcast" }; char(*p)[20];//行指针,str[3][20]共三行,每行20个字节 p = &str[0]; printf("%s\n", *(p + 1));//+1==向后走了20个字节,因为每个单词五个字母 system("pause"); return 0; } #include <stdio.h> #include <iostream> using