为什么指向常量的指针不能修改该常量的值
常量在定义的时候,比如加上了const限定符,那么编译时,系统为其分配内存的时候会把它放在常量区,全局变量和静态变量放在静态区,new或者malloc出来的空间放在堆里,局部变量和函数参数放在栈里。常量区是只读的,编译系统限制了对它的写操作,所以光有指针是不能修改其值的。
为什么指向常量的指针,常量值可以变动
指向常量的指针,指向的内容不可以改变,但指针变量的内容是可以改变的,可以改成指向另外位置的数据(不一定非得是常量)
...定义的字符串可以修改,而用指针定义的不能修改?
所以第一种指向了常量区,无法修改;第二种定义了普通的数组变量,放在栈中,可以修改
详解C语言指针与常量的关系
例如,常量指针`const double *p`不会允许通过`p++`来改变它所指向的值,即使这可能导致指针指向下一个元素。在函数参数中,使用常量指针可以明确表示函数不会通过指针修改传入的数据。区分指针常量和指针的关键在于`const`的位置。常量指针的`const`放在类型声明前,表示指向的元素不可变,而指针常量的`c...
指向常量的指针和常量指针的区别
第一个是限定x指向的对象的值不能修改,第二个是限定x的值不能修改,也就是说,x指定的对象不能修改。
为什么说C语言中常量不能改变?可以改变啊,比如我写代码的时候,本来写...
问题中 p2 不可变,p2++是错误的。再比如 下面定义了一个指向字符串常量的指针: const * ptr2 = stringprt1; 其中,ptr2 是一个指向字符串常量的指针。ptr2 所指向的字符串不能更新的,而 ptr2 是可以更新的。 因此, *ptr2 = "x"; 是非法的,而: ptr2 = stringptr2; 是合法的。
常量指针是不是不能给非常量指针赋值
那么prr是个指向整数常量的指针。假设 int a;prr=&a;如果允许pr=prr,那么通过pr指针就可以修改a,比如 *pr=10;这违背prr的定义,为防止绕道修改a值而出现错误乱,编译器就会提示错误。如果你只是想限定prr本身不可修改,可以这么写 int a;int *pr;int * const prr=&a;pr=prr;将const写在...
常量指针与指针常量的区别
首先,常量指针是指向常量的指针,其修饰的是指针所指向的数据,而不是指针本身。这意味着通过该指针,我们不能修改所指向的数据的值,但可以改变指针的指向。例如,const int *p,这里的p是一个指向const int的指针,我们不能通过p来修改它所指向的int值,但可以修改p使其指向另一个int常量。其次,...
c语言中,为什么不能对字符指针变量指向的字符串再赋值?
因为C语言中,凡是以""括住的形式直接出现,而且你又没有为其分配内存空间的字符串都是常量字符串,是不能修改其值的。这样:char a[6]="hello";a[2]='c';就可以了。这里你为hello分配了一个长度为6的字符数组空间来存放。
c++指针和字符串的问题 紧急!!! 高手请进
你对char *型的a 进行"abcdefg"的赋值,"abcdefg"存在静态区,是常量,不能改变,所以下面的a[0]='b'是错的,它在试图改变常量的值。