关于指针常量的定义的信息

http://www.itjxue.com  2024-06-12 20:09  来源:IT教学网  点击次数: 

谁能说清指针常量和常量指针的区别

1、常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。

2、常量指针!如 int b, c; int * const a = 表示a是一个常量指针它指向变量b的内存。但是因为是常量指针所以不能再用a指向其他变量,如 a = 错误!可以修改指向内存的值,如:*a = 20; BTW 常量指针声明的时候必须向我那样赋初值。

3、const 在 *前面,是常量指针,const在*后面,是指针常量。③这二者的区别就是:const int *p 指向的是 const int a=2;的p可以变化但是*p不可以变化。而int * const p= 意思是描述的是p,p不可变,就如const int a=2; a的值就不能再改变了。那么p不可以变,但是*p可以变。

为什么常量的地址不能付给普通指针变量?

这样pr=prr,就不会出现冲突,因为他们都指向一个同类型地址,且pr是个普通指针变量,所以可以赋值。

这两个程序都没有错误,没有不允许存放常量的要求。

指针指向的地址可以改,但是指向的内容不能改。若有const char * p = def, 则p = abc正确,而strcpy(p,abc);错误。 const char* const,*的左右两边都有const,是指向常量字符串的指针常量。若有const char* const p = def, 则p = abc和strcpy(p,abc);都错误。

int *)。二维数组名d表示其行指针,指针类型是(int (*)[7])。所以你要定义指针去用二维数组名赋值,需要定义指针int (*k)[7];不是int *k。或者你把二维数组当成一维数组来看(二维内部地址是连续的,和一维一样),这样int *k;k=&d[0][0];之后通过k++遍历二维数组所有值。

这个地址是我们杜撰的,因此p是野指针,系统根本没有为我们分配这个地址的内存空间,写入数据很可能会造成程序崩溃,而且是不确定的,一般情况不建议这么做,除非你很明确地址是有效的。

指针常量,NULL指针,指针的指针,&p,*p,&(*p),*(&p),这些怎么区分,怎么...

指针常量是指针所指向的位置不能改变,即指针本身是一个常量。但是指针常量可以通过间接引用修改内存中的数据。

定义指针常量的语句格式为:指针类型 *const 指针常量名=&变量名;比如 int * const p=&a 这时 p=&b 是错的(因为p是常量) 但*p =20是可以的 NULL指针,就是指针不指向任何东西。

NULL 就是一个特殊的指针值, 其实本质是一个宏 define NULL (void *)0 也就是0值, 强制转成了指针。用来表示一个指针非法。 所以在初始化的时候经常用NULL来初始化。由于是非法指针, 所以对这个指针取值(*操作)会导致程序崩溃。 必须要先指向一个有效空间才可以。

(责任编辑:IT教学网)

更多

相关安全技术文章

推荐安全技术文章