ZKX's LAB

C++编程基础知识二 解引用string类型首地址得到什么

2020-07-23知识9

可以把指针理解为定义地址的数据类型吗? 在C语言中,定义一个普通的变量(如整型数),我们这样做:int i;而定义一个指针变量(指针)我们需要这样做:int*p;还记得吗,一个矩形中的值是有类型的,可能是整型,可能是字符型…,它们原本是“清白”的,无类型的,是我们通过一些手段使它们有了类型。当我们做出int i;这样一个定义时,编译器就会分配一个地址(例如200)并和i 关联起来,而int将限定编译器把这个区域中的内容作为整型数看待。矩形内的值被视为int型现在我们又有了int*p;这个定义,假设p是指向变量i的(见下图),p中存的是变量i的地址。表示p是一个指针,而int表示p中所存的地址对应的变量(即变量i)的类型是int。p指向i,int*p;中的int是指针p所指向的变量的类型我们将int称为指针p的基类型,或指针p所指向的变量的类型。类似地,我们可以有:char*s;(s是指向char型变量的指针)float*f;(f是指向float型变量的指针)double*d;(d是指向double型变量的指针)由此得到声明一个指针变量(指针)的一般形式:基类型*指针名;有一点要注意,在定义指针时,以下两种方式都是允许的,例如:int*ptr1;int*ptr2;但一般比较倾向用第一种,因为可以避免以下的误解:int*prt1,ptr2;这样的定义。怎样在c++中用string类函数把一个句子中的非字母字符找出并去掉? 用迭代器遍历string对象,迭代器可以做解引用得到string内的字符,再用cctype 头文件里的isalpha测试这个字符,如果不是字母就用erase删除.c++对字符串的第一个字符取地址,怎么输出的是整个字符,不是地址,如下图 &ss[0]是 char*类型。cout把char*当做 c字符串处理一直输出直到\\0。对它解引用*&ss[0]就得到单个字符char 类型。java中的引用数据数据类型是怎样的? java中有两种数据类型:基本类型和引用类型。基本类型有8个:整数类型 byte、short、int、long浮点数类型 float、double字符型 char布尔类型 boolean引用类型包括三种:类 Class接口 Interface数组 Array基本类型是通过诸如 int a=5;long b=6L;的形式来定义的,称为自动变量,自动变量存放的是字面值,不是类的实例,它存放在内存的堆栈中,数据大小和生存期必须是确定的,存取速度比较快,在堆栈中的字面值可以共享,也就是说我们定义一个int a=5;然后又定义了一个int b=5;这时a与b在内存中指向的是同一个字面常量。引用类型一般是通过new关键字来创建,比如Integer num=new Integer(3);它存放在内存的堆中,可以在运行时动态的分配内存大小,生存期也不必事先告诉编译器,当引用类型变量不被使用时,Java内部的垃圾回收器GC会自动回收走。引用变量中存放的不是变量的内容,而是存放变量内容的地址。在参数传递时,基本类型都是传值,也就是传递的都是原变量的值得拷贝,改变这个值不会改变原变量,而引用类型传递的是地址,也就是参数与原变量指向的是同一个地址,所以如果改变参数的值,原变量的值也会改变。这点要注意。在java中,8种基本类型在java。

#字符串函数#c语言指针#string#指针变量#指针

随机阅读

qrcode
访问手机版