数据库指针是什么-贴库改版看看十库是倒退
首先,定义常量的关键字是const。 其实有个错误大家默认是正确的,就是用const定义的常量本质上还是一个变量,因为内存会分配地址来保存它。 如果你用 define 定义的常量就是实常量。 这个内存不会分配空间,那怎么区分呢,所以行内人都会用const来定义为只读变量。 只读表示只能读取它的值。数据库指针是什么,并且不能重新分配给他。 记住~
这道题说的难也难,说的简单也简单。 阅读下面的答案时,请记住指针是一个变量。 它有自己的内存空间,存储着它指向的地址。 请记住,指针的值是一个地址,以这种方式理解。
1.常量指针是指指针的值不能改变,即指针的值是常量,假设
诠释 *常量 p; 重点来了:const修饰p,p是指针。 我们知道指针也是一个变量,内存也会给它分配空间。 里面存放的是地址,所以我们可以根据const关键字来使用。 属性已知:指针变量p中的值不能改变,指针变量中有什么? 对,就是地址。正是因为他不能改变,所以我们必须在定义的时候初始化它,比如
诠释我= 20;
int *const p= &i;
请执行下列操作:
p =&i2 不行,因为p的值不能改变,即不能指向其他地址。
*p = 100; 没错,因为他改变的不是p的值,而是相当于改变了他指向的变量的值。
2.指针常量
形式 int const *p; 注意,const关键字,int的位置可以互换不影响,注意*和const的位置
重点:const修饰*p(这是重点); 我们知道p是一个地址,那么*p就是它指向的地址中的数据,它是一个值,而不是地址。 什么意思,还记得const的意思吗? 就是定义了一个只读变量,并且这个变量的值是不可改变的,那么这条语句的意思就是:*p的值是不可改变的:
假设下面的语句
int i1 = 30;
int i2 = 40;
const int *pi = &i1;
pi = &i2; /* 这里注意,pi可以随时重新分配到新的内存位置
地点*/
i2 = 80; /* 想一想:这里可以用 *pi = 80 代替吗? 当然不是! */
printf("%d\n", *pi); /* 输出为 80 */
语义分析:
你看见了吗? pi的值是可以修改的,即可以重定向到另一个地址
是的数据库指针是什么,但是i2的值不能被*pi修改(这句话是关键)。 不能通过*p的方式改变,并不代表i1和i2不能改变,即它指向的变量的值可以改变,但是不能通过*p = 40的方式改变.
我花了很长时间才弄清楚这个问题。 楼主想了想可以上机试试。 印象更深了~祝你进步!