const表示常量,这里是为了防止指针指向的内容被意外修改,所以设置为“只读”,即常量指针指向的区域不可修改。因为a的类型为void*,所以*a与*b是无法比较的,经过转换之后,*aa即为int型可以用来比较。
int cmp(const void *a,const void *b); (写cmp只是因为许多例子都是这样写,命名成别的也是可以的) 返回值必须是int,两个参数的类型必须都是const void *类型(变量名根据个人喜好) 假设是对int排序的话,如果是升序,那么就是如果a比b大,则返回一个正值,小则负值,相等返回 0,其他的依次类推, 根据具体情况...
声明cmp函数,其返回值为int型,参数为两个不可修改的void型指针
const void *a;*a=0x123;//是编译通只是的,由于*a中放的是个const值。 const值是不能被改变的。 const int m=1; const int n=2; a=&m; a=&n;//编译能够通过。 void* const a 这是定义了一个const指针a。a能够指向随意类型的值,但a是指向某个对象的常量指针。 我们不能改动指针中存储的地址。
const void *a这是定义了一个指针a,a可以指向任意类型的值,但它指向的值必须是常量,在这种情况下,我们不能修改被指向的对象,但可以使指针指向其他对象。nst与define两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一void的字面意思是“无类型”,void *则为“无类型指针”...
void* const a 这是定义了一个const指针a。a能够指向随意类型的值,但a是指向某个对象的常量指针。 我们不能改动指针中存储的地址。但能够改动指针指向的对象。 比如: void* const a;这个定义:*a=0x123;是没问题的, 可是a=(void*)&b;是不行的。由于a是const变量。
class Person { public: void ShowPerson() const { this->m_B = 100; } }; const修饰类对象:常对象 声明对象前加const称该对象为常对象 常对象只能调用常函数 语法:const 类名 对象名; class Person {}; const Person person; 示例: class Person { public: Person() { m_A = 0; m_B = ...
void c1() { cout << i1 << endl; } void c2() const { i1 = 5; } // assignment of member 'A::i1' in read-only object }; 作为参数值类型部分的const 这个地方使用的const是比较容易理解的,参数值的类型带有const表示此函数内不会修改这个参数的值,而不保证这个函数的调用者不会修改参数值(...
int const b = 10; 这两个语句是一样的,const关键字的位置和数据类型的位置的前后没影响,它只修饰 a 这个变量,它和其他的修饰符一样; 意思是限定 a 的值是一定的,不能再被改变(貌似有常量的性质),比如不可以对它进行赋值。a 一般在定义是进行初始化,以后便不能在改变了。