1、允许形参和实参都是const型的指针变量
2、允许形参和实参都是非const型的指针变量
3、不允许形参是const型指针变量,而实参是非const型指针变量,因为在函数执行过程中,形参的值是可以变化的,而形参和实参指向的都是同一单元。
4、允许形参是const型的指针变量,而实参是非const型的指针变量。
这是谭浩强C++上面的原话,我对前面三条都可以理解。第四条不可以理解。
我认为,在程序执行过程中,实参也可以发生变化,比如再次调用函数(形参所在的函数)的时候,实参就可以发生改变了。或者在使用递归的时候实参不是都在变化吗?
所以第四点就不成立了。
C++,错误:"const char *"类型的实参与"char *类型的形参不兼容"
这是说明类型不兼容,强制转类型。在声明变量 char* 时改成 const char *即可。当用户想在.h声明中定义成员变量,有时会报类型重定义错误,如果不是工程中真的重复定义了多个同名类,那么多半是没有给该类的头文件加条件指示符#ifndef。条件指示符#ifndef 最主要的目的就是防止头文件的重复包含和编...
C++指针、数组、引用、变量作函数参数的问题
1, 变量作为参数,这是单向值传递。即将数据传给被调函数后,与调用函数就不相关了,必须通过函数值返回操作结果。如有函数声明:void swap(int a,int b); \/\/功能是交换a,b值,但事实上对调用函数没有影响,因为swap函数的局部变量a,b在该函数执行完释放掉了,其值也就丢失了。2. 指针、数组...
c++中 , 实参和形参的区别是什么?
有以下区别:1、主体不同:实参在调用有参函数时,函数名后面括号中的参数为“实际参数”。形参不是实际存在变量,又称虚拟变量。2、目的不同:实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值,以便把这些值传送给形参。需要注意当形参和实参不是指针类型...
C++字符串小问题,请大家帮个忙,很简单
这个是要把数组传递给子函数操作,实际上只能传递的是该数组的指针,也就是子函数的数组指针指向的内容和主函数的是同一个,在子函数里修改其内容就是更改主函数里数组的内容。把形参设置成const,子函数就无权中修改其内容,保护了数据的安全性。所以在写传给子函数指针型数据时,如果不想(或不能)...
C++中,数组问题.
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;(3)在一个函数声明中,const可以修饰形参,表明它是一个输入...
在c++中,什么是形参,什么是实参。有何区别吗
1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值...
C++返回值为Const &的看法大虾给解释下
关于引用形参和const引用形参的问题我想楼下解释的和楼主理解的已经差不多了。引用形参不会复制传入的实参,而可以在函数内部修改实参。至于const引用,是告诉程序,我们不应该在函数内部修改传入的实参。那么为什么有的时候用引用形参有的时候用const引用形参呢?我会和第二个问题一起回答。关于返回值是引用...
c++中函数实参和形参的区别有哪些?
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:
C++中函数的const参数一定要传入const实参吗?
要注意unsinged char、signed char、char在C++中是不同的三种类型,char的算术运算结果类似unsigned还是signed,由实现(编译器)决定。ISO C允许不同类型指针的隐式转换,包括参数传递时实参向形参类型的转换。但是ISO C++对于类型检查更严格,必须使用显式的类型转换。
C++ 函数形参里的const char作为返回值问题
但形参是const char *,实参是 char *是可行的,当要返回形参指针时,其返回类型必须是const char *。\/ Yes.Press any key to continue \/ include <stdio.h>#include <string.h>const char *strFind(const char *str,const char *substr) {int i,j;int m = strlen(str);int n = strlen...