一、const char和char

const char*的类型是:“指向一个具有const限定符的char类型的指针”。(不能修改其值)

char*的类型是:“指向一个char类型的指针”。

因此const char和char都是指向char类型的指针,只不过const char*指向的char类型是const的。

因此对于代码:

char* src;
const char* dest ;
dest = src;

这样赋值是正确的,因为:

  • 操作数指向的都是char类型,因此是相容的
  • 左操作数具有有操作数所指向类型的全部限定符(右操作数没有限定符),同时自己有限定符(const)

如果反过来赋值就违反了赋值的约束条件:src指向的对象的值可以修改,而dest指向的对象的值不可修改
如果让src去指向dest所指向的那个不可修改的对象,如果合法,岂不是变得可修改了?

src = dest; // 这样赋值,左操作数指向的类型没有右操作数指向类型的const限定符,不符合约束条件2

二、MS-RTOS代码演示

函数声明:

/*** @brief Get the name of a specified process.** @note Cannot be called in the interrupt environment* @note Cannot be called in kernel lock environment** @param[in] pid               Process id* @param[out] name             Process name buffer* @param[in] len               Process name buffer length(MUST >= MS_KERN_OBJ_NAME_SIZE)** @return Error number*/
ms_err_t ms_process_name(ms_pid_t pid, char *name, ms_size_t len);/*** @brief Search a process by name.** @param[in] name              The name of process* @param[out] pid              Process id** @return Error number*/
ms_err_t ms_process_find(const char *name, ms_pid_t *pid);

代码实例:

#include <ms_rtos.h>int main (int argc, char **argv)
{ms_pid_t   pid;ms_pid_t   *fpid;char       buf[MS_KERN_OBJ_NAME_SIZE];char       *name;const char *find_name;pid = ms_process_self();ms_printf("process id is %d\n", pid);ms_process_name(pid, buf, MS_KERN_OBJ_NAME_SIZE);name = buf;ms_printf("process name is %s\n", name);fpid = &pid;find_name = name;ms_printf("find the process which name is %s pid is %d\n", find_name, *fpid);int ret = ms_process_find(find_name, fpid);if(ret >= 0) {ms_printf("find the process sucessful!\n");} else {ms_printf("fail to find the process!\n");}return  (0);
}

C语言---char *与const char *相关推荐

  1. char* 赋值 const char* 释放_嵌入式Linux开发《C语言专题(十:彻底搞懂“关键字”const)》...

    C语言中的关键字总共有32个:auto break case char const continue default do double else enum extern float for goto ...

  2. (C语言)写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2)

    写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2);设p1指向字符串s1,p2指向字符串s ...

  3. C++ 字符串、string、char *、char[]、const char*的转换和区别

    1.字符串 字符串本质就是一串字符,在C++中大家想到字符串往往第一反应是std::string(后面简称string) 字符串得从C语言说起,string其实是个类,C语言是没有class的,所以C ...

  4. 【错误记录】Android NDK 编译报错 ( no known conversion from ‘unsigned char *‘ to ‘const char *‘ )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Visual Studio 2019 中编译 Android NDK , 构建方式参考 [Android 逆向]Android 进程注入工具开发 ...

  5. mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’

    编译FAAC-1.28时遇到错误: mpeg4ip.h:126: error: new declaration 'char* strcasestr(const char*, const char*)' ...

  6. Bazel5.0.0源码安装报错:no matching function for call to ‘StrFormat(const char [28], const char*)’

    背景介绍 在红帽 源码安装Bazel时,执行指令: env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk --tool_java_runtime_ ...

  7. 写一个strncpy(char *dest, const char *src, size_t cpy_lent) 的函数

    strncpy是个安全函数,相对于strcpy而言.这个函数我们会经常用到,面试的时候也会时不时考一下,今天写一个,一是总结,二是方便日后自己回顾. char * strncpy(char * des ...

  8. 【Qt开发】几个傻不拉几关于char*和const char*的不兼容问题

    1. string转const char* string s ="abc"; constchar* c_s = s.c_str(); 2. const char*转string 直 ...

  9. char* 赋值 const char* 释放_C/C++编程笔记:C语言中 const 关键字的作用及解析,值得收藏!...

    有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小. 为了满足这一要求,可以使用const关键字对变量加以限定: c ...

最新文章

  1. 如何不用重启在CentOS 7/ RHEL 7虚拟机中添加一块新硬盘
  2. 中国啤酒设备行业运营效益分析与发展现状调研报告2021-2027年
  3. Python学习笔记之六:在VS中调用Python
  4. 用tomcat 发布mule 服务 (转)
  5. 操作系统基础:进程知识笔记(三)
  6. http://www.shengshiyouxi.com
  7. java 大数类_Java大数类介绍
  8. 案例 月工作列表 c# 1614192274
  9. 利用IIS建立高安全性Web服务器
  10. mysql 支持gbk_MySQL不支持GBK编码的解决方法
  11. sql 字段很多怎么汇总_利用集算器实现分库汇总
  12. Dev cpp的使用
  13. 计算机快捷键任务管理器,任务管理器快捷键,小编教你电脑如何打开任务管理器...
  14. 说说基因组的垃圾DNA-Transposable elements
  15. C语言基础--从零开始初识语言(多图超详解|超万字教程)
  16. 微信群越来越多,我该如何科学地管理?
  17. java affinity_线程亲和性(Thread Affinity)
  18. 【随笔】移动端input type|语义与IOS按键
  19. 新概念二册 Lesson 15 Good news佳音 ( 陈述句直接引语变间接引语)
  20. 老猿Python博客文章目录索引

热门文章

  1. matlab两张图片合成一张_如何将多幅图合并在一起变成一张大图
  2. 阿里云与海底捞合作QA
  3. ‘step’的调用中是否存在不正确的参数数据类型或缺少参数
  4. 简单方法解决火狐浏览器主页被篡改/挟持,主页变成垃圾网站的问题
  5. FACTORY 模式
  6. 手把手教你如何快速发表论文(干货)
  7. 中国黑色金属行业产量需求与十四五战略规划报告2022版
  8. 类似staruml的工具有哪些?
  9. python删除重复文件代码
  10. 1176: 【入门】买蛋糕