char p[] 和char *p的区别
正文
char p[]和char *p
用作变量定义:
char p[]="abcd";
char *p="abcd";
可能引起重名问题。都是可以的,含义也一样。
char p[]="abcd",char *p1;
前者是一个字符数组,内存中有一定的存放字符的空间;
后者只是一个指针,里面存放了一个地址,这个地址是一个存放字符的地址。
如果它们用作函数的参数,都可以用一个数组的名称或其中某元素的地址做参数。但是前者不能改变这个数组的内容,只能引用;后者可以改变数组的内容。
例子:

1 void a(char *cmd) 2 { 3 int t; 4 char str[10]; // xxx 5 if (sscanf(cmd, "%s%u", str, &t)) 6 { 7 printf_unify("!!!test start :str = %s, t = %u\n\n", str, t); 8 my_test(t); 9 } 10 else 11 { 12 printf("-------ERROR-\n\n"); 13 } 14 } 15 void main() 16 { 17 char cmd[10] = "test 1"; 18 a(cmd); 19 }
上面的代码中 xxx 处 必须采用 char p[],而不是 char *p.因为前者是分配了内存空间的可以存放数据,后者只是指向一个数据的存放地址。
以下是错误的例子

void a(char *cmd) { int t; char *str; // xxx if (sscanf(cmd, "%s%u", str, &t)) { printf_unify("!!!test start :str = %s, t = %u\n\n", str, t); my_test(t); } else { printf("-------ERROR-\n\n"); } } void main() { char cmd[10] = "test 1"; a(cmd); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律