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;
。