设为首页 加入收藏

TOP

C:带有const修饰的指针解读 (一)
2014-11-24 00:11:48 来源: 作者: 【 】 浏览:41
Tags:带有 const 修饰 指针 解读

通过实例来看看const所修饰的指针使用方法:

1、

先看一个普通的指针使用。

形式:int *pTmp

含义:一个普通的指向int类型的指针


[cpp]
int main(int argc, char *argv[])
{
int i = 1;

int *pTmp = &i;
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

(*pTmp)++;
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
int main(int argc, char *argv[])
{
int i = 1;

int *pTmp = &i;
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

(*pTmp)++;
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}

输出:


[plain]
pTmp = 1
pTmp = 2
pTmp = 3
请按任意键继续. . .
pTmp = 1
pTmp = 2
pTmp = 3
请按任意键继续. . .
没有任何问题,pTmp指针你可以任意操作。

2、

形式:const int *pTmp

含义:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变。


[cpp]
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;

const int *pTmp = &i; /*正确:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变*/
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

pTmp = &j; /*正确:将pTmp指向变量j的地址*/
printf("pTmp = %d\n", *pTmp);


(*pTmp)++; /*错误,pTmp指向的对象是只读的,编译出错提示:assignment of read-only location */
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;

const int *pTmp = &i; /*正确:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变*/
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

pTmp = &j; /*正确:将pTmp指向变量j的地址*/
printf("pTmp = %d\n", *pTmp);


(*pTmp)++; /*错误,pTmp指向的对象是只读的,编译出错提示:assignment of read-only location */
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
3、


形式:int const *pTmp

含义:与2相同, 表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变。


[cpp]
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;

const int *pTmp = &i; /*正确:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变*/
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

pTmp = &j; /*正确:将pTmp指向变量j的地址*/
printf("pTmp = %d\n", *pTmp);


(*pTmp)++; /*错误,pTmp指向的对象是只读的,编译出错提示:assignment of read-only location */
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;

const int *pTmp = &i; /*正确:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变*/
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

pTmp = &j; /*正确:将pTmp指向变量j的地址*/
printf("pTmp = %d\n", *pTmp);


(*pTmp)++; /*错误,pTmp指向的对象是只读的,编译出错提示:assignment of read-only location */
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
4、

形式:int * const pTmp

含义:pTmp不可修改,但pTmp所指向的对象可以修改。


[cpp]
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;

int * const pTmp = &i;
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

pTmp = &j; /*错误,pTmp不可修改,编译提示:error:assignment of read-only variable `pTmp'*/
printf("pTmp = %d\n", *pTmp);


(*pTmp)++; /*正确,pTmp所指向的对象可以修改 */
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;

int * const pTmp = &i;
printf("pTmp = %d\n", *pTmp);

i = 2;
printf("pTmp = %d\n", *pTmp);

pTmp = &j; /*错误,pTmp不可修改,编译提示:error:assignment of read-only variable `pTmp'*/
printf("pTmp = %d\n", *pTmp);


(*pTmp)++; /*正确,pTmp所指向的对象可以修改 */
printf("pTmp = %d\n", *pTmp);

system("PAUSE");

return 0;
}
5、

形式:const int * const pTmp

含义:pTmp不可修改,pTmp所指对象也不能修改。


[cpp

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C:函数指针解读 下一篇源码分享:将UTC转化为包含夏令时..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: