#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使用這個指針。但我們可以讓這個指針指向其他的字符串。
但是所示數組保存字符串的話,是存在棧區的,數組又是常量指針,即數組的這地址是不可以修改的,所以上面程序不會修改字符串的值。