const char*

关于const char*的例子

#include<stdio.h>

int main()
{
	const char *p = "123";

	p[1] = '3';  //会报错
	p = "456";  //不会报错

	printf("%s\n",p);

	return 0;
}

"123"是常量,放在代码区,不可修改,所以需要加上const char *,这样编译的时候,如果直接p[1] = 1,编译器就知道你给const变量赋值,那就报错了。 char *p = "123"; p[1] = '3'; 编译还是能过去的,不报错,但是程序执行的时候,会发生不可预知的错误,因为你对代码区的常量进行了修改。

char *const p 修饰指针为常量 指针指向内容可以是变量~既 p++这样的操作不合法 *p='3' 合法

const char * p 是p指向的内容是常量~p是变量~
~既 p++合法  *p='3' 不合法

时间: 2024-10-06 06:35:57

const char*的相关文章

关于char**与const char**

   const char**a; char *b[] = {0}; a = b; 对于上面这段代码,GCC编译器会在"a=b"一句上报告警告,提示不匹配的指针类型. 感觉非常奇怪,非const向const赋值,居然都报错?在网络上搜索相关问题,得到的信息大致如下: 在ANSI C标准中有这么一句话: 什么是合法的赋值形式呢?两个操作数都是指向有限定符或者无限定符的相容的指针,左边指针所指向的类型必须具有右边指针指向类型的全部限定符. 于是,对于语句: char *test1; con

const char*和const char[]怎么识别?

#include <iostream> using namespace std; template<typename T> class _ischararray_; template<typename T, int N> class _ischararray_<T[N]> { public: static bool _ischararray(){return true;} }; template<typename T> class _ischar

const char*, char const*, char*const的区别

const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目. 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,于是翻起来重嚼一下. 事实上这个概念谁都有只是三种声明方式非常相似: Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读. char * const cp; // * 读成 pointer to //

运算符重载-没有找到接受“const char [2]”类型的右操作数的运算符(或没有可接受的转换)

问题描述 没有找到接受"const char [2]"类型的右操作数的运算符(或没有可接受的转换) #include using namespace std; class Time { private: int hour; int minute; int second; public: Time(int h=0,int m=0, int s=0):hour(h),minute(m),second(s){} Time operator+(Time x) { Time z; z.hour=

为什么返回值是个字符串&amp;amp;quot;123&amp;amp;quot;就必须用const char* c接收。

问题描述 为什么返回值是个字符串"123"就必须用const char* c接收. 为什么返回值是个字符串"123"就必须用const char* c 接收.而且cout的时候直接cout<<c就行了c不应该是个指针吗不应该cout<<*c 才对嘛? 解决方案 1."123表示的是处于常量区的常量字符串,该区域一般是禁止进行写操作的(相当于const) 你如果不用const char *接收,而仅仅是用char *指针接收,那么意味

struct-error C2440:无法从“const char [5]”转换为char [20]”

问题描述 error C2440:无法从"const char [5]"转换为char [20]" 我想写一个根据输入即时查询的功能,但是这里报错了, #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct record { char name[20]; char number[20]; }NumberInfo[500];/

c++的问题- error C2440: “默认参数”: 无法从“const char [7]”转换为“std::string &amp;amp;amp;”

问题描述 error C2440: "默认参数": 无法从"const char [7]"转换为"std::string &" 代码如下: 1 #include 2 using namespace std; 3 class Student{ 4 string name; 5 public: 6 Student(string& n ="noName") :name(n){} 7 }; 8 class Teache

strlen-size_t write(const char *str)

问题描述 size_t write(const char *str) size_t write(const char *str) { return write((const uint8_t *)str, strlen(str)); } 这句代码 中return write((const uint8_t *)str, strlen(str));的含义怎么理解? 解决方案 含义是执行这句:write((const uint8_t *)str, strlen(str));,并返回它的执行结果 解决方案

编程c语言-c语言指针问题 char *p=&amp;amp;quot;abcdefg&amp;amp;quot;+1; 为什么会报错,const char*无法转换为char*

问题描述 c语言指针问题 char *p="abcdefg"+1: 为什么会报错,const char*无法转换为char* char p="abcdefg"+1: 为什么会报错,const char无法转换为char* 解决方案 abcdefg是const 不能直接加一 解决方案二: 我想我知道了,字符串是const的对象所以指向他的指针也必须用const修饰,但这样又有个问题了char* p="ddd":为什么就可以呢?"ddd&q