char str[] 和 char *str的区别

char *str 与char str[]的区别与联系 常用以下两种方式定义字符串:一种是字符数组,另一种是指向字符串的指针。 阅读详情
char* get_str(void)  
{  
    char str[] = {"abcd"};  
    return str;  
}  


       char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址。
       此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此数组被销毁,所以你返回的指针也就指向一块被销毁的内存,这种写法是错误的。

char* get_str(void)  
{  
    char *str = {"abcd"};  
    return str;  
}  


      char* str = {"abcd"};表示先定义个字符串常量,并将其地址赋给str。
      此函数返回的是字符串常量的地址,而像这种字符串都是属于全局的,在编译的时候就已经分配了内存了,只有程序退出的时候才会被销毁,所以返回它的地址是没有问题的,但是你最好返回常量指针,因为你不能去改变字符串常量的值。

char *str = "xxxxx",str指向该常量地址。
char str[] = "xxxxx",str在栈上申请空间,将常量内容复制进来,所以是局部变量。

char *a1 = "Hello1";  
char *a2 = "Hello1";  
char a3[] = "Hello2";  
char a4[] = "Hello2"; 

     那么在存储上,"Hello1"字符串只会有一份拷贝,a1和a2指向同一个位置;  "Hello2"则有两份拷贝,分别存在不同的位置,a3、a4地址也各不相同
char* str和char str[]的区别 char str[]="abcdef",这个数组的存储空间是在栈中开辟的,也就是说它的每个元素一次为'a','b','c','\0',将这几个值复制到str的位置中。       对于char *str="abcdef",str指向的是静态存储区,"abcdef"是位于常量区的,指针str只是指向了这个位置。注意:它与上面的复制不是一回事。既然位于常量区,那么这些值就不能被修改。而上面数组中,要 阅读详情

相关推荐

DBeaver连接IoTDB避坑指南:手动配置JDBC驱动的完整流程(附问题排查)

本文提供了在DBeaver中手动配置Apache IoTDB JDBC驱动的完整流程与避坑指南。详细解析了从驱动创建、库文件添加(关键是指向整个lib目录)到连接测试的每一步,并重点针对常见的ClassNotFoundException、连接拒绝等错误提供了深度排查方案,帮助用户高效建立图形化管理连接。

weixin_28327051的博客 396

char str[]和string str有什么区别?

是一个固定大小的字符数组,如果字符串的长度超过了数组的大小,可能会导致缓冲区溢出的问题。sizeof(a) = 24 //a是数组,但不需计算到'\0',结果为6 * 4=24。sizeof(c) = 5 //c是数组,计算到'\0'位置,结果为4 * 1+1=7。sizeof(cn) = 40 //开辟40个char空间,大小为40 * 1=40。sizeof(*cc) = 1 //*cc指向c的第一个字符,大小为1。sizeof(*aa) = 4 //*aa指向a的第一个数字,大小为4。

qq_73579869的博客 1466

【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

ESP32S连接JY61P并通过WIFI把姿态数据发送给电脑1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器;2.电脑接受数据是基于python的;

Doudou_Nai的博客 1133

C语言零碎知识点之字符串

C语言中并没有字符串这个类型,表示字符串时,需要使用字符数组,或字符指针。

二木成林 2267

3DGS-to-PC实战指南:零代码实现3D高斯场景到点云/Mesh的高效转换

本文详细介绍了3DGS-to-PC工具如何实现3D高斯场景到点云/Mesh的高效转换,无需代码即可完成。通过实战案例和参数调优技巧,帮助用户快速掌握这一开源插件的使用方法,提升3D数据处理效率。特别适合建筑扫描、影视特效等领域的专业人士。

q1w3e5r7t9y的博客 275

保姆级教程:用北醒TFmini-i-CAN雷达给PixHawk飞控加装‘眼睛’,实现自动避障与定高

经过多次测试,前向雷达的最佳安装位置是机架前部下方5-10cm处,倾斜角度20-30度。电源方面,建议为CAN设备单独供电,避免电机启动时的电压骤降导致数据异常。北醒TFmini-i-CAN雷达与PixHawk飞控的组合,为DIY爱好者打开了低成本实现智能避障的大门。实际部署时,需确保整个CAN网络的波特率一致(TFmini-i默认为250kbps),每个设备具有唯一ID。雷达的安装角度也直接影响检测效果,建议通过3D打印支架将雷达向前下方倾斜15-30度。当使用多个雷达时,需为每个设备创建独立的参数组。

weixin_30892889的博客 338

c语言 char *str 与char str[]区别

c语言 char *str 与char str[] 一、概念不同 C语言中没有特定的字符串类型,常用以下两种方式定义字符串:一种是字符数组,另一种是指向字符串的指针。 char *str 声明的是一个指针,这个指针可以指向任何字符串常量。 char str[] 声明的是一个字符数组,数组的内容可以是任何内容,严格意义上说,末尾加上’\0’ 之后才能算是字符串。 二、变量不同 char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)。 char str[]里str

weixin_45380951的博客 1万+

(入门向)在Ubuntu22.04.3安装Matlab2021b,以及无法安装在当前目录下的解决办法(见最后)

还有这个/usr/local是只读状态,我试过sudo chmod..去改那个文件的读,结果还是安装不了,我不是这个默认路径,因为它文件夹还是只读,于是我在matlab2021b下创了一个bin,并选上。输入完成后,依次按y,因为里面有三个文件,他会让你确定3次密码,直接yyy跳过即可。你可能会遇到装不下的情况,这个软件占30g,可是你分配给虚拟机就剩10g。,于是我去Downloads下建了一个matlab2021b文件夹,果然好使,3).此时,会提示你输入密码,因为这个rar是有密码的,

harrype的博客 7287

c语言char str什意思,C语言中,charstr的str到底表示什么?

问题:C语言中,char str的 str到底表示什么?描述:#includeint main(){#第一处char *pstr = "abcdef";printf("%c\n", *pstr);#第二处char str = 'A';char *ppstr = &str;printf("%c\n", *ppstr);return 0;}在上面的代码中,第一处部分,pstr是指向常量区字符数...

weixin_30620431的博客 4804

Python爬虫教程:如何爬取多平台电商商品信息(价格、评价、库存)

本文介绍了如何编写一个跨平台电商商品爬虫,爬取多个平台的商品信息,包括商品名称、价格、评价等数据。通过Python的爬虫库(如requestsSelenium)和数据处理库(如pandasmatplotlib)的结合,我们可以高效地获取和分析电商平台上的商品信息。

2201_76125261的博客 918

华为OD机试 C++【TLV解析】

这里的valueOffset指的是value在整串消息里的起始位置(从0开始数)。这表示tag是15(十六进制的0F),length是4,接着的8个字符是value的内容。你收到了一串由两端设备传递的TLV格式的消息,现在你需要根据这串消息生成一个对应的(tag, length, valueOffset)列表。tag是15,对应的数据长度为4,value从第3个字节开始,所以偏移量为2。第二行:一个数字n,表示我们给出的tag的数量(0 < n < 1000)。第一行:一串消息,长度不超过10000。

wtswts1232的博客 482

const char *str,char const *str,char *const str的区别,及const详解

c和c++中有三种定义: 1.const char *str, 2.char *const str, 3.char const *str. 现总结三者之间的区别: 一 char *const str 这是定义了一个指向字符的指针常量,即str的指向不能被修改,但是可以修改指针所指向的内容。 我们可以通过代码来验证修改str指向的内容: #include<iostream> using namespace std; int main() { char arr[] = "abcd

qq_56999918的博客 6299

IPCP(IP Control Protocol,IP控制协议)

IPCP(IP Control Protocol,IP控制协议)

天赐好车的博客 757

char str[], const char str[], const char *str区别

以下三条输出语句分别输出什么? char str1[] = "asdfkjsdk"; char str2[] = "asdfkjsdk"; const char str3[] = "asdfkjsdk"; const char str4[] = "asdfkjsdk"; const char* str5 = "asdfkjsdk"; const char* str6 = "asdfkj

Java技术博文 1583

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

c语言 char *str = ““ 和 char *str = NULL 以及 char str[] = {} 区别

前言 char *str = "" 和 char *str = NULL 区别 char *str = NULL 和 char str[] = {} 区别 char *str = "" 和 char str[] = {} 区别 char *str = "" 和 const char *str = "" 区别

zhuguanlin121的博客 1160

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

char a[] 和 char *str 的区别

char a[]="C++"; a[0]='c'; // 合法 char *p="C++"; p[0]='c'; // 合法但不正确 该段代码在VS2010下编译可以通过,但是运行时程序会停止工作,为什么呢?原因在于p[0]='c’这一语句。该语句试图修改p指向的字符串的首个字符,出现了错误。 原因在于两种方式对字符数组操作的机制不同。使用char *p="C++"语句后,编译器在内存的文字常量区分配一块内存,保存”C++“这

lion_cute的博客 742

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

char str[]与char *str的区别

转载自 http://blog.youkuaiyun.com/wangluotong00/article/details/39367709 今天做题的时候遇到一个问题,如何实现一个函数返回一个指针,返回一个整型值很简单,因为“C语言是按值传递的”,而想要返回一个指针,比如char型的指针,然后想在主调函数中使用被调函数的返回指针,分析了一下关于char str[]和char *str的区别 下

无锡小徐的博客 1万+

const char* str 、char const* str、 char* const str 三者的区别

在 Linux 的学习过程中,碰到很多次形参类型为 char* const str 或者 const char* str 的,一直没有搞懂这三者的区别。因此今天特地去学习了下。

Clouds26的博客 437

char *str 和 char str[] 的区别

相同点: 都是定义一个字符串 不同点: 1.含义上的区别 char str[] 是定义一个字符串数组,数组对应的是一块内存区域,而char *str 是定义一个指向字符串的指针,即指向一块内存区域。 数组的内存大小和其地址在作用域里是固定不变的,只有它存储的内容可以改变;而指针却不同,它指向的内存区域的大小随时可以改变,而且当指针指向常量字符串时,它指向的内容是不可以被修改的,否则在运行时会报错。...

qq_43579888的博客 1万+

char* str和char str[]的区别

char* str和char str[]的区别   转载▼ 本文转自:http://blog.youkuaiyun.com/andysun1986/article/details/6941230 我记得很久以前我也遇到过这个问题,后来也是如下解决的,只是不记得写个日志,今天转发了一个博客作为笔记! 要求用递归实现字符串反转的问题:输入char* str="abcdef",

foreverhuylee的专栏 1267

char*str1="abcde"和char*str2[]="abcde"的区别

charstr1="abcde"和charstr2[]="abcde"的区别 1.首先我们需要了解它们分别代表着什么 char *str1 = “abcde”(此时定义的为字符串常量) char *str2[] =“abcde”(此时定义的为字符数组) str1是一个指针,其初值指向一个字符串常量,其可以被修改以指向其他地址,但无法修改字符串的内容 str2[]是一个数组,存放初始化字符串及’\...

Vvaaz的博客 3415

char str[] 和 char *str 的区别

char str[] 和 char *str 的区别 [cpp] view plaincopy char* get_str(void)   {       char str[] = {"abcd"};       return str;   }          char str[] = {"abcd"};定义了一个局部字符

chenglinhust的专栏 941

str[]和char *str,以及读入字符串的区别

区别在于,str[] 在定义时候就分配了存储空间,而char *str;只是一个指针,如果不进行初始化的话,它没有存储数据的能力。 在使用scanf("%s", str)之前,必须要先给 *str分配空间,使用malloc函数,使用完毕后,要记住用free(str);释放掉分配的空间,否则分配的空间不能被再利用。 ...

qq_33508523的博客 1281

char str[] 与 char *str的区别详细解析

以下是对char str[]与char *str的区别进行了详细的介绍,需要的朋友可以过来参考下 复制代码代码如下: char* get_str(void)   {       char str[] = {"abcd"};       return str;   } char str[] = {"abcd"};定义了一个

1096

C语言| |const char*str,char* const str和char const *str的区别

const是c语言的一个关键字 作用:限定变量不会被改变 const char* str: 意义:确保*str的内容不会改变,也就是用str这个指针无法改变str这个指针指向的地址的内容, 但是可以改变这个指针 char const str和const charstr含义一样 char* const str: 意义:确保str这个指针不会改变,但是这个指针里面的内容可以改变。 ...

凯的博客 6027
上一篇: H面试程序(2)josephus 问题
下一篇: H面试程序(0):字符串一些常用函数的实现
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值