C语言---关于char型数组和char型指针的问题

今天在学习数据结构中线性表的过程中,碰到了关于char型数组和指针的问题。说实话这也是困扰了我许久的问题。

问题具体描述

C语言---关于char型数组和char型指针的问题_第1张图片
如上代码,定义了一个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相关的地方进行修改:
C语言---关于char型数组和char型指针的问题_第2张图片
编译运行均无异常,警告也成功消除。

总结:
1.牢记关键字const的不同用法。
2.形参中调用数组的方法是 类型+数组名[],实参中直接使用 数组名即可。
3.衍生出的新问题,数组名究竟是什么?

你可能感兴趣的:(C语言---关于char型数组和char型指针的问题)