str字符串常量,字符指针char * str的存储方式,以及如何赋值的

news2024/9/22 7:37:08

在这里插入图片描述
在使用字符指针时,第一种为通常的情况。
这次主要关注第二种情况:把字符串赋值给字符指针变量,pa中存储的不是这串字符,而是字符串的首字符的地址。
abcdef作为一个常量字符串程序会把其放在一个单独的内存区域,pa存储的是字符a的内存地址,
当程序打印时就能通过a的地址打印出整个字符串。

int main()
{
    char str1[] = "hello world.";
    char str2[] = "hello world.";
    const char *str3 = "hello world.";
    const char *str4 = "hello world.";
    if(str1 ==str2)
 		printf("str1 and str2 are same\n");
    else
		 printf("str1 and str2 are not same\n");
       
    if(str3 ==str4)
		 printf("str3 and str4 are same\n");
    else
		 printf("str3 and str4 are not same\n");
       
    return 0;
}

这个代码的结果是str1不等str2,str3等于str4。
str1与str2作为数组名,表示的是数组首元素的地址,两个数组在内存中开辟的空间不同,地址当然不同。
而hello world作为常量字符串,程序将其单独放在一个内存区中,只存储一次,由于字符串相同没有必要多次存储。两个指针储存的都是其首元素地址,所以两指针中的地址相同。

2、str1和str3一样大吗,答案是不一样的,

#include <stdio.h>
#include <string.h>

int main()
{
        char str1[] = "hello world.";
        const char *str3 = "hello world.";
 
        int i = 0,j=0;
		i = sizeof(str1);
        j = sizeof(str3);
		printf("sizeof(str1) = %d sizeof(str3) = %d \r\n",i,j);
		
		i = strlen(str1);
        j = strlen(str3);
		printf("strlen(str1) = %d strlen(str3) = %d \r\n",i,j);
        
        return 0;
}

sizeof(str1) = 13 sizeof(str3) = 8
strlen(str1) = 12 strlen(str3) = 12

str1的占用字节大小是13,结尾时,会自动加上结束符’\0’,12 + 1 ,共13个字节,而str3 大小是8,因为字符常量指针,string,类型是8个字节,就是个指针

str1,2的长度是12个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1964778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ Primer 总结索引 | 第十七章:标准库特殊设施

仍有一些标准库设施在很多应用中都是有用的&#xff1a;tuple、bitset、正则表达式以及随机数。还将介绍一些附加的I/O库功能&#xff1a;格式控制、未格式化I/O和随机访问 1、tuple 类型 1、tuple 是类似 pair 的模板。不同 tuple 类型的成员类型也不同&#xff0c;但一个 t…

基于SpringBoot+Vue的在线政务服务中心(带1w+文档)

基于SpringBootVue的在线政务服务中心(带1w文档) 本在线政务服务中心管理系统应用在线政务服务中心&#xff0c;数据库采用的是Mysql数据库&#xff0c;并且选择了java语言和SpringBoot框架进行开发项目&#xff0c;在项目开发过程中&#xff0c;实现了系统功能模块的安全性、实…

基于SpringBoot+Vue的来访管理系统(带1w+文档)

基于SpringBootVue的来访管理系统(带1w文档) 本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库[1]&#xff0c;而java技术[2]&#xff0c; B/S架构则保证了较高的平台适应性。文中主要是讲解了该系统的开发环境、要实现的基本功能和开发步骤&#xff0c;并主要讲述了…

删除链表的倒数第N个结点(LeetCode)

题目 给你一个链表&#xff0c;删除链表的倒数第个结点&#xff0c;并且返回链表的头结点。 示例1&#xff1a; 输入&#xff1a;&#xff0c; 输出&#xff1a; 示例2&#xff1a; 输入&#xff1a;&#xff0c; 输出&#xff1a; 示例3&#xff1a; 输入&#xff1a;&#x…

HCL实验1:两台PC通过交换机ping通

2台PC机器的Ip地址必须在同一子网 PC_2的ip地址和子网掩码配置如下 PC_3的ip地址和子网掩码配置如下 将接口管理启用 在PC_2的主机上ping PC_3的ip

万科云城 科技驱动的产城融合未来开放式智慧园区

随着科技的飞速发展&#xff0c;产城融合正成为推动城市发展的新引擎&#xff0c;而智慧园区作为产城融合建设的承载体&#xff0c;通过云、边、端等新型基础设施的不断完善&#xff0c;将生产、生活等功能板块有机结合&#xff0c;打破物理边界&#xff0c;重塑科技空间与服务…

人工智能已经到来,下一步会是什么?

人工智能 (AI) 一词诞生于 1955 年&#xff0c;当时一小群科学家游说洛克菲勒基金会资助达特茅斯研讨会&#xff0c;这是一项为期两个月的项目&#xff0c;其目的是“找到如何让机器使用语言、形成抽象和概念、解决现在只能由人类解决的各种问题并自我完善”。 人工智能的快速…

C++ 二叉树-递归与层序遍历

二叉树的题目根据不同的题目特点需要用不同的递归算法或者层序遍历实现。 递归三要素 根据题目要求&#xff1a;确定递归函数的参数和返回值&#xff1b;根据题目要求&#xff1a;确定递归函数的终止返回条件&#xff1b;根据题目要求&#xff1a;确定单层的递归逻辑。 层序…

系统架构设计师体系(高级)——开篇

哈哈&#xff0c;架构体系终于开篇了&#xff01;需要说明的是软考架构偏向于技术层面&#xff0c;对数据、业务和应用方向需要再开设新专栏。同时&#xff0c;笔者编写的内容大多基于培训、阅读和其他途径的综合整理&#xff0c;并不代表已经具有高级架构知识体系。希望读者可…

DjangoRF-10-过滤-django-filter

1、安装pip install django-filter https://pypi.org/ 搜索django-filter基础用法 2、进行配置 3、进行内容调试。 4、如果碰到没有关联的字段。interfaces和projects没有直接关联字段&#xff0c;但是interface和module有关联&#xff0c;而且module和projects关联&#x…

程序员转型AI大模型好转吗?成功率高吗?

前言 在程序员圈子中&#xff0c;技术转型近年来一直是热门话题。随着AI技术的迅猛发展&#xff0c;优秀人才短缺&#xff0c;程序员向AI大模型转型似乎成为了一条通往职场先机的路径。但是&#xff0c;这条转型之路是否容易走&#xff0c;成功率又如何呢&#xff1f; 一、程…

刷题了: 110.平衡二叉树 | 257. 二叉树的所有路径 |404.左叶子之和 | 222.完全二叉树的节点个数

110.平衡二叉树 文章讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html 视频讲解:https://www.bilibili.com/video/BV1Ug411S7my/?spm_id_from333.788&vd_sourcee70917aa6392827d1ccc8d85e19e8375 题目链接:https://leetcode.cn…

MySQL从jsonarray获取某个字段的所有数据

表结构。表里的order_goods_info_vo_list是jsonarray字段 CREATE TABLE pdd_charge_back_bantuo (id int(11) NOT NULL AUTO_INCREMENT,shopname varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 店铺名,charge_back_sn varchar(64) COLLATE utf8mb4_bin DEFAULT NULL …

8. Spring Ai之入门到精通(超级详细)

简介 2024年5月30号Spring AI 的 1.0.0 里程碑 1 版本发布。表明版本已正在巩固&#xff0c;并且大部分主要错误和问题已经解决&#xff0c;API基本已确定&#xff0c;不会发生很大的变化。 在与大模型集成方面&#xff0c;继LangChain4j之后&#xff0c;又一重大的框架诞生。标…

捷径,这世上有没有捷径

Q&#xff1a;大师&#xff0c;这个世界上有没有捷径&#xff1f; A&#xff1a;有呀&#xff0c;有捷径呀 Q&#xff1a;大师&#xff0c;那我要怎么走&#xff1f; A&#xff1a;你错啦&#xff0c;不要想着走捷径&#xff0c;因为捷径不是用来走的&#xff0c;捷径是用来飞的…

计算机网络03

文章目录 重传机制超时重传快速重传SACK 方法Duplicate SACK 滑动窗口流量控制操作系统缓冲区与滑动窗口的关系窗口关闭糊涂窗口综合症 拥塞控制慢启动拥塞避免算法拥塞发生快速恢复 如何理解是 TCP 面向字节流协议&#xff1f;如何理解字节流&#xff1f;如何解决粘包&#xf…

设计界的福音:Figma中文官网,你不知道的秘密

Figma是一个基于浏览器的协作式 UI 设计工具&#xff0c;从推出至今受到 越来越多UI设计师的青睐。Figma可以在所有主流操作系统中使用&#xff0c;无论你是Mac还是Windows&#xff0c;都可以运行。无需本地保存&#xff0c;在线多人协作&#xff0c;这样轻量化的工作模式深受大…

【秋招突围】2024届秋招笔试-OPPO笔试题-第一套-三语言题解(Java/Cpp/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新 OPPO 春秋招笔试题**汇总&#xff5e; &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; ✨ 笔试合集传送们 -> &#x1f9f7;春秋招笔试合集 &#x1f380; 01.K小姐的快…

R安装Matrix的版本问题

今天遇到一个奇怪的问题 Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck vI[[j]]) :载入了名字空间‘Matrix’ 1.4-1&#xff0c;但需要的是> 1.6.0其实我一直没搞明白&#xff0c;Matrix是cran上面的包嘛 为什么Rstudio上面又不现实呢&…

STL常用容器-stack栈容器queue队容器

stack栈的基本概念 stack是一种先进后出(First In Last Out,FILO)的数据结构&#xff0c;它只有一个出口&#xff1b; 只允许在栈顶新增元素、删除元素、获取栈顶元素&#xff0c;但是除了栈顶之外&#xff0c;其他位置都不能存取元素&#xff0c;只有栈顶元素能被外界访问&am…