码迷,mamicode.com
首页 > 编程语言 > 详细

字符数组与与指针保存字符串区别

时间:2017-08-20 15:50:23      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:字符   add   color   常量   printf   数据段   --   argv   print   

#include <stdio.h>
int main(int argc, char **argv)
{
        char str[] = "gyu";
        //charr*str = "gg"
        printf("str address is %p\n", str);
        fun(&str);
        printf("main -- %s p is %p\n", str, (unsigned int *)str);
        fun1(&str);
        printf("-----%s\n", *(argv+2));
        printf("main -- %s\n", str);
}

int fun(char **str)
{
        *str = "1234";
        printf("FILE %s---LINE %d---%s--p is %p\n",__FILE__,__LINE__,*str, *str);
}

int fun1(char **str)
{
                *str = "kkkk";
                printf("---%s\n",*str);
                printf("FILE %s---LINE %d---\n",__FILE__,__LINE__);
}

所示程序,若指针指向一个字符串,这个字符串是保存在数据段常量区的,是不可以修改的,不能strcat使用这个指针。但我们可以让这个指针指向其他的字符串。

但是所示数组保存字符串的话,是存在栈区的,数组又是常量指针,即数组的这地址是不可以修改的,所以上面程序不会修改字符串的值。

字符数组与与指针保存字符串区别

标签:字符   add   color   常量   printf   数据段   --   argv   print   

原文地址:http://www.cnblogs.com/mcy0808/p/7400114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!