#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> using namespace std; class StringStack{ ; const string* stack[size]; int index; public: StringStack(); void push(const string* s); const string* pop(); }; Stri…
const X* 类型的指针(指向常量的指针),此指针的地址是一个变量,是可以修改的:但其所指向的内容是常量,是不可以修改的. 例如: 1: char name[5] = "lisi"; 2: const char* pstr = name; 3: pstr = "zhangsan"; // 修改指针的值,OK 4: *pstr = 'z'; // 修改指针指向的内容,ERROR X* const 类型的指针(常量指针),此指针的地址是一个常量,是不可以修改的:但其…
在c程序中,我们可能经常会使用到指针之间的赋值. 传统的赋值操作: char *cp = "c"; const char *ccp; ccp = cp; printf("*ccp:%c",*ccp); 会正常打印出*cpp所指的字符.但是下面的这段代码,就会出现问题: char **c = &cp; const char **cc; cc = c; printf("**cc:%c",**cc); 编译的时候提示,出现错误: >---…
当将const与指针一起使用的时候,一般有两种情况,const被应用到指针指向的那个东西,或者const被应用到存储在指针中的内存地址. 第一种情况:pointer to const 注意:const修饰符绑定到离他最近的那个东西上. const int* u; //u是一个指针,指向一个const int.即 为 (const int) (*u); 也就是说u不是静态的,所以它不需要初始化. 但需要注意: int const* v;//这个表达方式实际上与上面的那个表达式是一个意思!即 (in…
1.定义:const常量类型表示一个”常值变量“,其值是不能被修改的变量.即一旦变量被声明为const类型,编译器将禁止任何试图修改该变量的操作. 2.声明:const <声明数据类型> 常量或常量表达式初始化. 3.与宏定义指令#define的区别: #define只是做简单的文本替换,不会做类型检查. const声明时,编译器替换变量时会做严格的类型检查,只有与声明数据类型相同时才做替换. 4.常见的用途: 使用const限定函数的参数和返回值. 1)当函数的参数限定为const类型时,说…
1.引用.常量引用 引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用在内部存放的是一个对象的地址,它是该对象的别名.引用不占用内存,因为取地址引用的值和被引用变量的地址相同.但是objdump –d xx底层编译器实现其实还是指针. (1)引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用. ; ; //错误.非常量引用的初始值必须为左值 int &re = ival; //ok int &re2 = &ival; //错误.不可用对象…
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/3696367.html 通过查看LPCSTR的定义: typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR; 可以知道LPCSTR代表了const char *类型,它是一个指向以'\0'结尾的8位(单字节)ANSI字符数组的常量指针, 而const wchar_t *类型是一个指向'\0'结尾的16位(双字节)Unicode字符数…
void*是一种特殊的指针类型,可以用来存放任意对象的地址.一个void*指针存放着一个地址,这一点和其他指针类似.不同的是,我们对它到底储存的是什么对象的地址并不了解: 比如:double a=2.3; int b=5; void *p=&a; cout<<p<<endl;   //输出了a的地址 p=&b; cout<<p<<endl;   //输出了b的地址 //cout<<*p<<endl;这一行不可以执行,v…
// container.cpp : 定义控制台应用程序的入口点. //   #include "stdafx.h" #include<iostream> #include<string>   using namespace std;   int _tmain(int argc, _TCHAR* argv[]) { typedef string *pstring; string a = "abc"; //const pstring good…
前提 我们忽略掉了相同类型是否可以赋值的情况(我到现在的学习里都还可以相互赋值),以及类型兼容的情况.只考虑const.&.*等修饰符带来的影响 类型兼容: 强制类型转换 基类与子类间的兼容 类的构造函数类型兼容(构造函数的参数类型可以转换为该类的类型,仅转换一次) 前置const与后置cconst const: const初始化的变量要必须绑定一个值(变量还是常量都行) 这个绑定值可以隐式或者显示,大部分时候用显示更安全 eg:string等容器,使用构造函数可以进行隐式默认初始化,const…