C语言const与指针
2017-02-15 02:04
211 查看
通过实例来看看const所修饰的指针使用方法:
1、
先看一个普通的指针使用。
形式:int *pTmp
含义:一个普通的指向int类型的指针
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;
}
输出:
pTmp = 1
pTmp = 2
pTmp = 3
请按任意键继续. . .
没有任何问题,pTmp指针你可以任意操作。
2、
形式:const int *pTmp
含义:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变。
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可变。
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所指向的对象可以修改。
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所指对象也不能修改。
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;
const int * const pTmp = &i;
printf("pTmp = %d\n", *pTmp);
i = 2; /*正确*/
printf("pTmp = %d\n", *pTmp);
pTmp = &j; /*错误:error: assignment of read-only variable `pTmp'*/
printf("pTmp = %d\n", *pTmp);
(*pTmp)++; /*错误:error: increment of read-only location*/
printf("pTmp = %d\n", *pTmp);
system("PAUSE");
return 0;
}
1、
先看一个普通的指针使用。
形式:int *pTmp
含义:一个普通的指向int类型的指针
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;
}
输出:
pTmp = 1
pTmp = 2
pTmp = 3
请按任意键继续. . .
没有任何问题,pTmp指针你可以任意操作。
2、
形式:const int *pTmp
含义:表示pTmp所指向的对象是只读的,但pTmp可指向其他地址,即pTmp可变。
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可变。
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所指向的对象可以修改。
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所指对象也不能修改。
int main(int argc, char *argv[])
{
int i = 1;
int j = 100;
const int * const pTmp = &i;
printf("pTmp = %d\n", *pTmp);
i = 2; /*正确*/
printf("pTmp = %d\n", *pTmp);
pTmp = &j; /*错误:error: assignment of read-only variable `pTmp'*/
printf("pTmp = %d\n", *pTmp);
(*pTmp)++; /*错误:error: increment of read-only location*/
printf("pTmp = %d\n", *pTmp);
system("PAUSE");
return 0;
}
相关文章推荐
- C语言指针(3)~const关键字与指针
- C语言的const关键字与指针搭配使用
- c语言中const 类型变量地址赋值给指针。
- C语言--const修饰指针解析
- C语言里的const和指针修饰关系
- C语言的const和指针
- C语言--const修饰指针解析
- C语言中const与指针的指针
- C语言中const与指针使用方法总结
- c语言的指针、数组和常量修饰符const
- C语言中关于const与指针结合的理解
- C语言--const修饰指针解析
- c语言---const搭配指针问题
- const和指针(C语言)
- C语言回顾(七、多重指针,argc,argv,动态内存分配,void指针,const)——iOS开发基础
- C语言的const关键字与指针搭配使用
- C语言const与指针——为什么不能用char **给const char **赋值
- C语言之const常量(摘自C和指针)
- C语言 const与指针
- C语言的const关键字与指针搭配使用