当前位置: 首页 > news >正文

2025-03-15 学习记录--C/C++-C语言 char* price; 和 char price;的区别

C语言 char* price;char price;的区别

char* price;char price; 是两种完全不同的变量声明方式,它们的区别主要体现在类型、存储内容和用法上。以下是详细对比:👇🏻

一. 类型 ⭐️

1、char price;:🍭
  • 这是一个 字符变量,用于存储单个字符char 类型)。
  • 它占用 1 字节 的内存空间。

例如: 🌰

char price = 'A';  // price 存储字符 'A'
2、char* price;:🍭
  • 这是一个 字符指针变量,用于存储字符串的地址(即指向字符数组的指针)。
  • 它占用 指针大小 的内存空间(通常为 4 字节或 8 字节,取决于系统架构)。

例如: 🌰

char* price = "3.00";  // price 指向字符串 "3.00" 的首地址

二、存储内容 ⭐️

1、char price;:🍭

存储 单个字符。🎈

例如: 🌰

char price = 'A';  // price 存储字符 'A'
2、char* price;:🍭

存储 字符串的首地址(即指向字符数组的指针)。🎈

例如: 🌰

char* price = "3.00";  // price 指向字符串 "3.00" 的首地址

三、 用法 ⭐️

1、char price;:🍭

适用于存储 单个字符。🦋

例如: 🌰

char price = 'A';
printf("%c\n", price);  // 输出字符 'A'
2、char* price;:🍭

适用于存储 字符串(字符数组)。🦋

例如: 🌰

char* price = "3.00";
printf("%s\n", price);  // 输出字符串 "3.00"

四、 内存分配 ⭐️

1、char price;:🍭
  • 直接分配 1 字节的内存空间,用于存储单个字符

例如: 🌰

char price = 'A';  // 分配 1 字节内存,存储字符 'A'
2、char* price;:🍭
  • 分配指针大小的内存空间,用于存储字符串的地址
  • 字符串本身存储在常量区或堆区(取决于初始化方式)。

例如: 🌰

char* price = "3.00";  // 分配指针大小的内存,指向常量字符串 "3.00"

五、示例对比 ⭐️

1、使用 char price;:🍭
#include <stdio.h>

int main() {
    char price = 'A';  // 存储单个字符
    printf("price = %c\n", price);  // 输出字符(用 %c)
    return 0;
}

输出: 👇🏻

price = A
2、使用 char* price;:🍭
#include <stdio.h>

int main() {
    char* price = "3.00";  // 存储字符串的地址
    printf("price = %s\n", price);  // 输出字符串(用 %s)
    return 0;
}

输出: 👇🏻

price = 3.00

六、常见错误 ⭐️

错误 1:将 char* 赋值给 char 🍭
char price;
price = "3.00";  // 错误!"3.00" 是字符串,不能赋值给 char 类型

修正 🎀: 👇🏻

char* price;
price = "3.00";  // 正确
错误 2:将 char 当作字符串使用 🍭
char price = 'A';
printf("%s\n", price);  // 错误!%s 需要 char* 类型,但 price 是 char 类型

修正 🎀: 👇🏻

char price = 'A';
printf("%c\n", price);  // 正确

七、总结 ⭐️

特性char price;char* price;
类型字符变量字符指针变量
存储内容单个字符字符串的地址
内存占用1 字节指针大小(通常 4 或 8 字节)
用法存储单个字符存储字符串
示例char price = ‘A’;char* price = “3.00”;
输出方式printf(“%c”, price);printf(“%s”, price);

选择使用哪种❓

  • 如果需要存储 单个字符,使用 char price;
  • 如果需要存储 字符串,使用 char* price;

在这里插入图片描述

http://www.dtcms.com/a/69984.html

相关文章:

  • 背诵--1
  • 【NLP】7. 自然语言处理 (NLP) 的关键要素
  • 零基础上手Python数据分析 (2):Python核心语法快速入门
  • golang从入门到做牛马:第二十篇-Go语言接口:行为的“契约”
  • 深入探究 HTML 框架:多页面同窗口显示的奥秘
  • 【红黑树】—— 我与C++的不解之缘(二十五)
  • 软件环境安装-通过Docker安装Elasticsearch和Kibana【保姆级教程、内含图解】
  • SpringBoot配置文件
  • 【Docker compose】Neo4j 数据备份与恢复
  • 插入排序c++
  • 【BP神经网络】实战
  • PHP语言的区块链扩展性
  • 大模型后训练+微调
  • MAC地址IP地址如何转换?
  • LuaJIT 学习(5)—— string.buffer 库
  • 梧桐:开发者的命令行效率应用
  • 打开的idea项目maven不生效
  • C++20 的 `std::remove_cvref`:简化类型处理的利器
  • Python扑克牌小游戏
  • Redis哨兵:从看门狗到导盲犬的进化史
  • C#中运算符重载‌你会用吗?
  • Day16:最小的k个数
  • [CISSP] [3] 人员安全与社会工程
  • 栈刷题+总结
  • 全概公式和贝叶斯公式
  • 机器学习中的 K-均值聚类算法及其优缺点。
  • 如何在AVL树中高效插入并保持平衡:一步步掌握旋转与平衡因子 —— 旋转篇
  • 【.Net 9下使用Tensorflow.net---通过LSTM实现中文情感分析】
  • PentestGPT 下载
  • RHCE(RHCSA复习:npm、dnf、源码安装实验)