关于char*类型返回值和字符串常量

看这样一段简单的程序:

#include <stdio.h>

char* fun()
{
    return "fun";
}

int main()
{
    printf("%s", fun());
    return 0;
}

这段程序可以正常run,但是最好不要这么做。

因为

直观上你返回了一个局部的东西出去。

你可以再外面定义这个常量,然后返回。

另外,字符串常量不可修改,而char*意味着要修改,故此最好加上const。

时间: 2024-08-04 11:59:24

关于char*类型返回值和字符串常量的相关文章

SpringMVC-方法四种类型返回值总结,你用过几种?

SpringMVC 现在算是 Java 领域的一个基础性框架了,很多人天天用,可是对于 SpringMVC 方法的返回值,你又是否完全清楚呢?今天松哥就来和大家聊一聊 SpringMVC 中四种不同类型的返回值,看看有没有 get 到你的知识盲点? 1. ModelAndView 以前前后端不分的情况下,ModelAndView 应该是最最常见的返回值类型了,现在前后端分离后,后端都是以返回 JSON 数据为主了.后端返回 ModelAndView 这个比较容易理解,开发者可以在 ModelAn

ASP.NET Core Web API处理HttpResponseMessage类型返回值的问题

在将我们的 web api 从 .NET Framework 迁移至 .net core(asp.net core 1.1)之后,遇到一个问题. 之前返回值类型为 HttpResponseMessage 的 web api,比如: [HttpGet] public async Task<HttpResponseMessage> Get() { return await _httpClient.GetAsync($"..."); } (注:这个 web api 的用途是直接将

函数返回值为字符串的几种写法

#include <cstdio> #include <cstring> #include <iostream> #include <string> #include <Windows.h> using namespace std; void fun(char *s){//通过形参返回字符串 strcpy(s, "hello"); } char *fun2(char *s){//另一种写法, strcpy(s, "h

vs2017中char* str = &quot;1234asd56&quot;;会报错,——const char*类型的值不能用于初始化char*类型的实体

原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char*是历史遗留原因,在vs2017中如题目中写时,程序可能就崩溃了,新版本VS对这个进行了更严格的控件 原文地址:https://www.cnblogs.com/shixisheng/p/9181938.html

Error:不能将&quot;char*&quot;类型的值分配到&quot;LPSTR&quot;类型的实体 或者 &quot;char*&quot;类型的实参与&quot;LPCWSTR&quot;类型的形参不兼容

选择"XXX项目"->"属性"->"配置属性"->"常规"选项中,把"使用 Unicode 字符集"改为"使用多字节字符集",然后确定.如下图(VS2012):

Error:不能将&quot;char*&quot;类型的值分配到&quot;LPSTR&quot;类型的实体 也许 &quot;char*&quot;类型的实参与&quot;LPCWSTR&quot;类型的形参不兼容

http://www.myexception.cn/ruby-rails/1876106.html 选择“XXX项目”->“属性”->“配置属性”->“常规”选项中,把“使用 Unicode 字符集”改为“使用多字节字符集”,然后确定.如下图(VS2012):

&quot;const char *&quot; 类型的值不能用于初始化 &quot;char *&quot; 类型的实体

用vs2019发现会出现这样的问题 最后发现只要设置一下就解决了,解决方案如下: 右击该项目,选择属性->c/c++->语言->将符合模式改为否就行了... 设置之后程序没有再报错,问题解决了 原文地址:https://www.cnblogs.com/YLJ666/p/12293773.html

Spring MVC方法的返回值类型

一,String类型作为返回值类型 返回值类型为String时,一般用于返回视图名称 1.当方法返回值为Null时,默认将请求路径当做视图 /jsp/thread/secondRequest.jsp 如果说没有试图解析器,如果返回值为Null携带数据只能用JSON 2.当方法返回一个String的字符串时,当字符串为逻辑视图名时只返回视图,如果要携带数据则使用request,session或者Json 如果要用Model或者ModelMap传递数据,那么Model或者ModelMap绝对是方法入

SpringMVC方法的返回值类型和自动装配

1. void类型作为返回值类型 /** * 如果方法写成了void就跟原来servlet含义是差不多 的 * json */ @RequestMapping("/firstRequest") public void firstRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException { UserInfo info=new UserI