首页
学习
活动
专区
圈层
工具
发布

深入 char * ,char ** ,char a ,char *a[] 内核

5  char *  与 char  a[ ];        char  *s;        char  a[ ] ;        前面说到 a代表字符串的首地址,而s 这个指针也保存字符串的地址...用一句话来概括,就是 char *s 只是一个保存字符串首地址的指针变量, char a[ ] 是许多连续的内存单元,单元中的元素为char ,之所以用 char *能达到  char a  [ ]...但是,char* 和 char a[ ] 的本质属性是不一样的。。     ...6      char **  与char  * a[ ] ;             先看 char  *a [ ] ;             由于[ ] 的优先级高于* 所以a先和 [ ]结合...char **s;        char **为二级指针, s保存一级指针 char *的地址,关于二级指针就在这里不详细讨论了 ,简单的说一下二级指针的易错点。

3.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    char *a 与char a[] 的区别

    char *a = “hello” 中的a是指向第一个字符‘h’的一个指针 char a[20] = “hello” 中数组名a也是执行数组第一个字符‘h’的指针 *但二者并不相同:* 看实例...两者区别如下: 一. ”读“ ”写“ 能力 char *a = “abcd”; 此时”abcd”存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。...而char a[20] = “abcd”; 此时 “abcd”存放在栈。可以通过指针去访问和修改数组内容。 二. 赋值时刻 char *a = “abcd”; 是在编译时就确定了(因为为常量)。...而char a[20] = “abcd”; 在运行时确定 三. 存取效率 char *a = “abcd”; 存于静态存储区。在栈上的数组比指针所指向字符串快。...因此慢 而char a[20] = “abcd”; 存于栈上。

    1.7K10

    vs2017中C2440错误:“初始化”:无法从const char转换为char*问题解决

    一、Bug描述 C2440错误表示编译器无法隐式地将一个const char数组转换为一个char类型的指针。...在C++中,const char[]表示一个常量字符数组,而char是一个字符指针,指向可以修改的字符。编译器不允许这种转换,以防止对常量数据的潜在修改。...但是很多朋友说 vs2016中代码可以用,但是到了vs2017就不行了,这该怎么办呢。 二、定位报错原因 类型不匹配:尝试将一个常量字符数组赋值给一个非const的字符指针。...代码示例: const char myArray[] = "Hello"; char* myPointer = const_castchar*>(myArray); 方案二:声明非const字符数组...把代码 char*str = “hello world”; 改成如下形式 char str_tmp[] = “hello world”; char *str = str_tmp; 方案六:加const

    87110
    领券