用数组实现的字符串和用指针实现的字符串

用数组实现的字符串和用指针实现的字符串。

1、

复制代码
#include <stdio.h>

int main(void)
{
    char str[] = "abc"; //数组实现的字符串,str为数组名,为指向数组起始元素的指针,相当于“a”的指针。 
    char *ptr = "123"; //指针实现的字符串,ptr为指针,表示指向字符串字面量“123”首个字符的指针,即“1"的指针。 
    
    printf("str:  %s\n", str);
    printf("ptr:  %s\n", ptr);
    
    return 0;    
} 
复制代码

 

 

001、使用指针实现的字符串比使用数组实现的字符串占用更多的内存空间,因为指针创建的字符串除了字符串字面量占据内存空间外,指针也要占据内存空间。

002、数组名表示数组起始元素的指针,使用指针创建的字符串,指针变量也表示首个字符的指针,因此行为和数组本身一样,可以依据访问每一个字符。

 

2、用数组实现的字符串和用指针实现的字符串的不同点。

复制代码
#include <stdio.h>  

int main(void)
{
    char str[] = "abc";  //用数组实现的字符串
    printf("str = %s\n", str);
    str = "edf"; //此处编译错误,因为不能使用赋值运算符对数组进行修改,str为数组名。虽然str表示一个元素的指针,也不能修改。
    printf("str = %s\n", str);
    
    return 0;
}
复制代码

 

复制代码
#include <stdio.h>  

int main(void)
{
    char *ptr = "abc";  //用指针实现的字符串
    printf("ptr = %s\n", ptr);
    ptr = "def";    // 此处不会编译失败,说明使用指针实现的字符串,指针ptr可以修改为指向其他字符的指针。
    printf("ptr = %s\n", ptr);
    
    return 0;
}
复制代码

 

可以为指向字符串字面量(中的字符)的指针赋上指向别的字符串字面量(中的字符)的指针。 赋值后,指针指向新的字符串字面量(中的字符)。

 

posted @   小鲨鱼2018  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示