C 语言中char* 和const char*的区别
const char *p = "123"; p[1] = '3'; // 会报错
p = "456"; // 不会报错 const char * 只是说指针指向的内容不可变,但指针本身可以再赋值 假设你的程序是
char * findArg(char *s) {
return s;
} 这个时候,你如果传const char *进去,那么好一些的编译器,会知道,你传回的函数返回值,也是const char *,也就是指针指向的内容不可写。 所以如果你传进去的是const char *,最好还是把 char *name写成const char *name,因为char *name可以对指针指向的内容进行修改。 用强制转换当然也可以,但是
const char *name2 = "123";
char *name = (char *)name2;
如果你对name指向的内容进行改变,如 name[2] = '4';
"123"是常量,对常量进行修改,你的程序就会发生不可预知的错误 char* findArg(char *){.....}
如果你这个函数,对传入的参数,不会对指针指向的内容进行修改,最好写成 char * findArg(const char *) {....}
或 const char * findArg(const char *) {....}
C 语言中char* 和const char*的区别的更多相关文章
- C语言中strcpy(char *strDest, const char *strScr)字符串复制库函数的理解与分析
		
1.原版的strcpy()函数原型 char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) &am ...
 - C++ 字符串、string、char *、char[]、const char*的转换和区别
		
1.字符串 字符串本质就是一串字符,在C++中大家想到字符串往往第一反应是std::string(后面简称string) 字符串得从C语言说起,string其实是个类,C语言是没有class的,所以C ...
 - 字符串复制char *strcpy(char* dest, const char *src);
		
⒈strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((NULL==strDest) || (NULL==strSr ...
 - [转载] 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc),编写函数 strcpy(C++版)
		
已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串.不调用C++/C ...
 - char*,const char*和string 三者转换
		
1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua&quo ...
 - C++ char*,const char*,string,int 的相互转换
		
C++ char*,const char*,string,int 的相互转换 1. string转const char* string s ="abc";const char* ...
 - char *与const char **函数参数传参问题
		
传参方法 ## 函数 extern void f2 ( const char ** ccc ); const char ch = 'X'; char * ch_ptr; const char ** c ...
 - c/c++ 中的char* ,const char* 和 char* const 总结[转]
		
文章转自:c/c++ 中的char* ,const char* 和 char* const 总结 例1: char* str="abc";//错误写法 (在.c文件中是正确的) c ...
 - char *strstr(const char *str1, const char *str2);
		
[FROM MSDN && 百科] 原型:char *strstr(const char *str1, const char *str2); #include<string.h& ...
 
随机推荐
- Codeforces Round #392 (Div. 2) Unfair Poll
			
C. Unfair Poll time limit per test 1 second memory limit per test 256 megabytes input standard input ...
 - [BZOJ4196]软件包管理器(树链剖分)
			
[BZOJ4196] install x-> 询问根节点到x路径上0的个数,然后全变1 uninstall x-> 询问x子树(包括x)中1的个数,然后全边0 Code #include ...
 - 13、python中的函数(闭包与装饰器)
			
一.嵌套函数 函数的内部又再定义另一个函数,这个函数就叫嵌套函数,里面含函数就叫内部函数. 示例: 二.返回函数 函数可以接收函数对象作为参数,同理函数也能返回一个函数对象作为返回值. 示例: 返回函 ...
 - Too many parameters: expected 1, was given 2 Query: SELECT count(id) FROM `user` WHERE username = ?; Parameters: [org.apache.commons.dbutils.handlers.ScalarHandler@453da22c, [李明]]
			
public Object getValue(String sql,Object... args) { Connection conn = null; Object obj= null; try { ...
 - 使用dataframe解决spark TopN问题:分组、排序、取TopN和join相关问题
			
package com.profile.mainimport org.apache.spark.sql.expressions.Windowimport org.apache.spark.sql.fu ...
 - json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)
			
一 使用json-lib包下的JSONObject和JSONArray转换 代码如下: package com.test.test; import java.util.ArrayList; impor ...
 - 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先
			
剑指Offer - 九度1509 - 树中两个结点的最低公共祖先2014-02-07 01:04 题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样 ...
 - lnmp一键安装环境中nginx开启pathinfo
			
问题及原理可参考:http://www.laruence.com/2009/11/13/1138.html 如果是用lnmp脚本一键安装的开发环境,可以通过如下方式开户pathinfo: 1.注释ng ...
 - 【The VC Dimension】林轩田机器学习基石
			
首先回顾上节课末尾引出来的VC Bound概念,对于机器学习来说,VC dimension理论到底有啥用. 三点: 1. 如果有Break Point证明是一个好的假设集合 2. 如果N足够大,那么E ...
 - Vue组件编写
			
Vue无疑是近来最火的一个前端框架,它吸取了angular1.x和react的精华,性能优良,而且易于上手,本文主要是关于如何去写一个组件. 首先是项目目录 编写组件 在这里我写了一个日期控件(移动端 ...