通过数组保存字符串和通过指针保存字符串的区别

本文介绍了C语言中如何使用数组和指针来操作字符串,并详细解释了二者之间的区别。包括字符串的修改、存储位置及作用域等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
//  main.c
//  C语言学习


#include <stdio.h>


int main(int argc, const char * argv[]) {
   
    //保存字符串
    
    //通过数组
    char str[] = "ykd";
    str[0] = 'm';
    printf("str = %s\n",str); //str = mkd
    
    //通过指针
    char *str2 = "ykd";
    //str2[0] = 'm'; //Thread 1:EXC_BAD_ACCESS (不能修改)
    
    /*
     通过指针保存一个字符串,其实就是保存的字符串的第0个元素的地址
     */
    
    /*
     通过数组保存字符串和通过指针保存字符串的区别:
     1.通过数组来保存的字符串,那么字符串是一个变量 str 可以修改
     2.如果通过指针来保存字符串,那么字符串是一个常量 str2 不能修改
     3.数组保存的字符串存储在内存的栈中,而通过指针保存的字符串存储在常量区
     4.存储在栈中的变量有一个特点,当作用域结束系统会自动释放该变量
     5.存储在常量区中的值不会被释放,而且多个相同的值对应的地址相同
     */
    
    char str3[] = "ykd";
    printf("str=%p,str3=%p\n",str,str3); //str=0x7fff5fbff7ac,str3=0x7fff5fbff79c (内存地址不同)
    
    char *str4 = "ykd";
    printf("st2=%p,str4=%p\n",str2,str4); //st2=0x100000f78,str4=0x100000f78 (内存地址相同)
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值