首页 > 其他分享 >【C语言】字符指针

【C语言】字符指针

时间:2024-06-16 23:58:08浏览次数:21  
标签:字符 pstr C语言 char printf bit str4 hello 指针

在指针的类型中我们知道有一种指针类型为字符指针 char* ;

一般使用:

 int main()
 {
 char ch = 'w';
 char *pc = &ch;
 *pc = 'w';
 return 0;
 }

还有一种使用方式如下:

int main()
 {
 const char* pstr = "hello bit.";//这里是把一个字符串放到pstr指针变量里了吗?
printf("%s\n", pstr);
 return 0;
 }

代码 const char* pstr = "hello bit.";

特别容易让同学以为是把字符串 hello bit放到字符指针 pstr 里了,但是/本质是把字符串 hello bit. 首字符的地址放到了pstr中。

 

上面代码的意思是把一个常量字符串的首字符h的地址存放到指针变量 pstr 中。

int main()
{
	char a = 'a';
	char* p = &a;

	const char* arr1 = "hello world";
	char arr2[] = "hello world";

	printf("%c\n", *arr1);
	printf("%s\n", arr1);
	printf("%s\n", arr2);

	return 0;
}

 

#include <stdio.h>
 int main()
 {
 char str1[] = "hello bit.";
 char str2[] = "hello bit.";
 const char *str3 = "hello bit.";
 const char *str4 = "hello bit.";
 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放在常量区。

 

 这里str3和str4指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当 几个指针。指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化 不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4不同。

标签:字符,pstr,C语言,char,printf,bit,str4,hello,指针
From: https://blog.csdn.net/weixin_66400112/article/details/139728809

相关文章

  • day8字符串
    有一说一,又是一道题都做不出来的一天KMP感觉理解了,但是敲不对,有点麻一道一道记录下题目:https://leetcode.cn/problems/reverse-words-in-a-string/解析:https://programmercarl.com/0151.翻转字符串里的单词.html#算法公开课这道题的精髓是消除所有空格:stringstripSpaces......
  • solidity byte32转字符串日志输出学习
    直接上代码://SPDX-License-Identifier:MITpragmasolidity^0.8.0;abstractcontractEIP712{eventLogValues(bytes32domainSeparator,bytes32structHash);function_hashTypedDataV4(bytes32structHash)internalvirtualreturns(bytes32){......
  • Redis是一个高性能的键值对数据库,它支持多种数据结构,如字符串、列表、集合、有序集合
    Redis是一个高性能的键值对数据库,它支持多种数据结构,如字符串、列表、集合、有序集合和哈希表。以下是一些Redis命令的实践示例,帮助你了解如何使用Redis。连接Redis服务器首先,使用redis-cli命令连接到Redis服务器:redis-cli-h<hostname>-p<port>基本命令PING:检查Redis......
  • C语言笔记第15篇:文件操作
    1、为什么使用文件?如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序的数据的,如果要将数据进行持久化的保存,我们可以使用文件。2、什么是文件?磁盘(硬盘)上的文件就是文件。但是程序设计中,我们一般谈两个文......
  • C++智能指针
    std::unique_ptr:独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对......
  • C语言程序设计(第四版)第十章主要内容
    本章主要讲述了<字符串>一、字符串字面量1.字符串字面量,有时也称为字符串常量,它是由一对双引号括起来的一个字符序列。2."a"是字符串字面量,而'a'是字符常量。3.字符串实际就是由若干有效字符构成且以'\0'作为结束的一个字符序列。二、字符串的存储1.字符串结束标志'\0'也......
  • #C语言结构体/结构体指针/单链表学习必备总结(浓缩版)#
    一.结构体的定义结构体是一种用户自定义的数据类型,用于将多个不同类型的数据组合在一起形成一个新的数据类型。结构体由多个成员变量组成,每个成员变量可以是不同的数据类型,可以是基本数据类型(如整型、浮点型、字符型等)或其他结构体类型。结构体的成员变量在内存中是按照声明的......
  • python如何判断字符串不为空格
    1、使用字符串长度判断。len(s)==0 则字符串为空if len(username) ==0 or len(password) == 0:  #判断输入的用户名或密码是否为空    print('用户名或密码不能为空')2、isspace判断是否字符串全部是空格。s.isspace()==Trueif username.isspace(......
  • 学习C语言两个月后的收获(篇目三) #算术操作符 #强制类型转换 #关系操作符 #条件操作符
    一.算术操作符1.双目操作符:+、-、*、/、%注:双目操作符,顾名思义就是有两个操作数的操作符a./:除号。分为整数的除法和小数的除法整数的除法:'/'两边的操作数是整除故而进行整数的除法。整数的除法取值规则:不管余数是多少,不会四舍五入,直接舍弃余数部分而得到......
  • 【华为OD】D卷真题100分:阿里巴巴找黄金宝箱(II) C语言代码实现[思路+代码]
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客JS、Java、C、python、C++代码实现:【华为OD】D卷真题100分:阿里巴巴找黄金宝箱(II)JavaScript代码实现[思......