苏中建设集团网站,校园二手网站开发与设计任务书,电商网站建设建站方案,劳务工程信息平台一. 简介
前一篇文章简单学习了数组与指针的区别#xff0c;文章如下#xff1a;
C语言中数组与指针的区别-CSDN博客
本文学习一下 初始化为 字符串的 指针。防止使用过程中出现问题。 二. 初始化指针来指向字符串
初始化指针来指向字符串#xff0c;例如如下代码就是…一. 简介
前一篇文章简单学习了数组与指针的区别文章如下
C语言中数组与指针的区别-CSDN博客
本文学习一下 初始化为 字符串的 指针。防止使用过程中出现问题。 二. 初始化指针来指向字符串
初始化指针来指向字符串例如如下代码就是初始化指针来指向字符串
char *ptr hello world!; 指针形式 (*ptr) 也使得编译器为字符串在静态存储区预留了 13个元素的空间另外一旦开始执行程序它会为 指针变量 ptr 留下一个存储位置并把字符串的地址村存在指针变量中该变量最初指向该字符串的首地址。 通过打印如下代码分析
#include stdio.h#define MSG hello worldint main(void)
{char buf[] MSG;const char* ptr MSG;printf(address MSG: %p\n, MSG);printf(address buf: %p\n, buf);printf(address ptr: %p\n, ptr);printf(address of \hello world\: %p\n, hello world);return 0;
} 输出结果如下 该程序的输出结果说明什么
第一指针ptr 和 MSG 的地址相同而 与 数组 buf 的地址不同。这就说明字符串数组中的字符串是从 静态存储区的重新拷贝了一份。印证了 前一篇文章关于数组的说明
C语言中数组与指针的区别-CSDN博客 第二直接使用 printf函数打印 字符串常量 hello world 的地址该字符串的地址与 MSG的地址相同说明编译器只是使用了一个存储位置也就说明编译器可以把多次使用的相同字符串常量存储在一处或多处另一个编译器可能在不同的位置存储了三个 hello world。
第三静态数据使用的内存与 buf数组使用的动态内存不同。