字符數組與與指針保存字符串區別


#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使用這個指針。但我們可以讓這個指針指向其他的字符串。

但是所示數組保存字符串的話,是存在棧區的,數組又是常量指針,即數組的這地址是不可以修改的,所以上面程序不會修改字符串的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM