当前位置: 首页 > 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;

在这里插入图片描述

相关文章:

  • 背诵--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哨兵:从看门狗到导盲犬的进化史
  • 再获殊荣!IP SH跻身上海文化品牌全球传播力TOP 6
  • 山东枣庄同一站点两名饿了么骑手先后猝死,当地热线:职能部门正调查
  • 27岁杨阳拟任苏木镇党委副职,系2020年内蒙古自治区选调生
  • 十大券商看后市|A股中枢有望逐步震荡抬升,把握结构性行情
  • 退休夫妻月入1.2万负债1.2亿申请破产,律师:“诚实而不幸”系前置条件
  • 宜昌全域高质量发展:机制创新与产业重构的双向突围