美文网首页
关于C中const的一些解惑

关于C中const的一些解惑

作者: dongshixiao | 来源:发表于2018-03-26 08:32 被阅读0次
const int *p; 
int const* p;
int* const p; 

傻傻分不清楚, 上大学时没有理解清楚的知识点,终于知道咋回事了。

const int *p; // const修饰的是*p,因此*p是常量不能改变,但可以改变p的指向;
int const* p; // 同上,主要是看const与*的前后关系;
int* const p; // const修饰的是p,因此p的指向是常量不能改变,但*p可以改变;
const int const *p; // 两个const既修饰了*p也修饰了p,因此*p与p都是常量不能改变;

下面贴一点代码:

#include "stdio.h"
int main(int argc, char const *argv[]) {

  int a = 80;
  int b = 88;
  const int *p ;
  p=&a;
  p=&b;
  printf("%d\n",*p );

  int* const p1=&a;
  //p1 = &b;  
  //storage/c/10/const.c:12:6:
  //error: assignment of read-only variable ‘p1’
  //错误:只读变量P1的赋值
  printf("%d\n",*p1 );

  return 0;
}

请注意看报错信息。
由此可以知道,const比较害羞,谁离他近,他就修饰谁。
一个用法:

//如果函数的意图并不是修改数组的数据内容,
//只是用到数组里面的数据,那么形参可以定义成const开头的
//比如进行输出一些字符串:
void put1(const char * string) {
  while (*string) {
    putchar(*string++);
  }
}

***********************万能的分割线*********************

以前都是在win下学习C,现在搬到linux上面,要习惯这两个参数的存在。argc表示有几个参数(加上自身这个可执行文件) argv表示字符串数组把argc个参数都列出来。举个栗子:

#include "stdio.h"
int main(int argc, char const *argv[]) {
  int i=0;
for ( i = 0; i < argc; i++) {
  printf("%s\n", argv[i]);
}
  return 0;
}

在命令行调用编译后的程序

./a.out "aaa bbb" ccc

输出:

./a.out
aaa bbb
ccc

在命令行调用编译后的程序

./a.out aaa bbb ccc

输出:

./a.out
aaa
bbb
ccc

相关文章

  • 关于C中const的一些解惑

    傻傻分不清楚, 上大学时没有理解清楚的知识点,终于知道咋回事了。 下面贴一点代码: 请注意看报错信息。由此可以知道...

  • const理解

    关于const *和* const的理解,可以参考[C C++ OC指针常量和常量指针区别]这篇文章。 该篇文章中...

  • 一、C++中的const、define

    C 语言中 在C语言中,const是个假语法,const 中的变量可以通过指针修改,例如: C++中 const ...

  • 通俗易懂讲C++ const必要用法(仅此一版)

    关于C++ const 的全面总结(这个链接的字简直不能看,但是内容是好的) 一、ORBSLAM2中const的例...

  • 2018-11-27 类成员函数后面加const

    c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义。今天来讲讲...

  • C++const_cast

    C++标准转换运算符const_cast 前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针...

  • const、static、extern 在头文件中似的情况小结

    const C语言中const修饰的变量存在静态区,c++中存在代码区不占内存。在...

  • 网易云课堂(Boolan)C++ 第五周笔记

    CONST C++中只有const对象调用对象内非const函数会不成功,所以能加const的尽量加const,而...

  • C++ const

    C 和 C++ 中全局 const 变量的作用域相同,都是当前文件,不同的是它们的可见范围:C 语言中 const...

  • 【记2】const小记

    一、首先介绍C语言中的const功能。 二、开始比较C语言与C++中的const区别。在C语言中,若采用以下代码,...

网友评论

      本文标题:关于C中const的一些解惑

      本文链接:https://www.haomeiwen.com/subject/szfaqftx.html