//
// 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;
}
通过数组保存字符串和通过指针保存字符串的区别
最新推荐文章于 2024-06-27 23:17:57 发布