C语言---关于char型数组和char型指针的问题
2018-01-20 00:57
477 查看
今天在学习数据结构中线性表的过程中,碰到了关于char型数组和指针的问题。说实话这也是困扰了我许久的问题。
如上代码,定义了一个char型数组a后,将其作为形参传入insert()函数,再返回数组a的地址。
编译出错。错误代码如下:
不兼容的参数类型赋值:char*赋值char[8]。
1.由于返回值不可能为一个数组,所以只能通过修改主函数中a的类型:char* a="abcdefg";编译出现警告。
因为"abcdefg"为const char型,a为字符指针。可以理解为编译器为"abcdefg"在常量区分配了8个字节的大小的空间,然后将其地址返回给a。所以理应来说,a指针指向的内容是const型不允许被修改,所以指针也应该为const char*型。
如若对关键词const有疑问,请参见:const char*和char* const的区别
2.我们将a指针改为常量型指针。相应的,我们将所有与a相关的地方进行修改:
编译运行均无异常,警告也成功消除。
总结:
1.牢记关键字const的不同用法。
2.形参中调用数组的方法是类型+数组名[],实参中直接使用数组名即可。
3.衍生出的新问题,数组名究竟是什么?
问题具体描述
如上代码,定义了一个char型数组a后,将其作为形参传入insert()函数,再返回数组a的地址。
编译出错。错误代码如下:
不兼容的参数类型赋值:char*赋值char[8]。
1.由于返回值不可能为一个数组,所以只能通过修改主函数中a的类型:char* a="abcdefg";编译出现警告。
因为"abcdefg"为const char型,a为字符指针。可以理解为编译器为"abcdefg"在常量区分配了8个字节的大小的空间,然后将其地址返回给a。所以理应来说,a指针指向的内容是const型不允许被修改,所以指针也应该为const char*型。
如若对关键词const有疑问,请参见:const char*和char* const的区别
2.我们将a指针改为常量型指针。相应的,我们将所有与a相关的地方进行修改:
编译运行均无异常,警告也成功消除。
总结:
1.牢记关键字const的不同用法。
2.形参中调用数组的方法是类型+数组名[],实参中直接使用数组名即可。
3.衍生出的新问题,数组名究竟是什么?
相关文章推荐
- 关于C语言字符数组、字符串和指针的相关问题
- 关于C语言数组利用指针排序的问题
- 小小的C语言问题指针数组赋值----关于指针和数组。
- C语言一级指针、二级指针、数组作为参数传递需要注意的若干问题
- 关于数组指针,指针数组和字符串数组的一些问题
- 关于数组和指针的一些基本问题
- C语言指针问题,初始化,赋值,以及字符数组,字符串常量等问题
- 关于C++中char型数组、指针及strcpy函数的细节观察
- C语言中 数组到底是不是指针和数组作为参数问题
- php中关于数组的指针移动问题!
- C语言中,关于数组和结构体变量的的默认初值问题
- 关于将数组地址赋给指针的问题
- C语言结构体里的成员数组和指针(C语言的一个隐晦角落——关于零数组)
- 关于数组名作为指针的问题
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- c语言指针、数组问题(1)
- 用C语言关于学生管理系统的几种实现方法(一位数组,二维数组,指针,结构体)
- 关于指针和数组对申请内存malloc和作为参数传递的一些问题
- 发现一个c语言中用字符数组和char型指针管理字符串一个很容易搞混的地方
- 关于数组和指针作为参数时遇到的问题