char p hello world 有什麼問題

2025-03-12 22:00:17 字數 1057 閱讀 2286

1樓:袁玉梅

hello world"作為靜態字串實際上儲存在資料區,但寫程式的人不知道這個位址,而程式本身知道。當某一函式以。

方式使用此靜態字串時,實際上相當於:

char p[12];

strcpy(p, "hello world");

p[12]是在棧裡臨時分配的。洞消雖然p指向的內容是"hello world", 但是這是複製品,納攔知不是原件。當函式結束,char p就被程式**了,所以p的內容就不再是"hello world"了。

但如果以char *p="hello world"的方式使用,p指向的是靜態字串儲存的位置,也就是說指向"hello world"的原件,當然沒有問題了。

如果想堅持用char p而不使用char *p, 有效方法必須是:

static char p=衡唯hello world";

return p;

static char 是靜態的,儲存在資料區。

char *a[] = { "hello", "world" }; char **p = a; 邏輯是怎麼樣的啊?a,p是什麼,p[0]a[0]呢?

2樓:網友

a是乙個一維陣列指標(其實就是二維指標)。p是乙個二維指標。p和a的位址是一樣的。都是字串「hello」的首位址。不知道這樣說行不行。

因為char **p = a是一維陣列的指標。也就是說p[0],p[1]指向的是一維陣列。p的位址等於a的位址所以,p[0]=a[0],p[1]=a[1].

a是乙個一維陣列指標。裡面的元素是一維陣列的位址。在這裡一維陣列分別是「hello」和"world"

3樓:繁嬅若夢

char *a是指標陣列,其實質是陣列,裡面存放的是都是位址。

而樓主所提的問題中:a、p都是位址。a[0]就是就指向"hello",*a[0]指向"hello"的首字母"h";char **p是二級指標,指向位址的指標,*p就是p[0],等價於a[0]輸出的都是"hello",*p[0]等價於*a[0],輸出的是"hello"的首字母"h。