陣列裡存的是什麼,還有指標指向字串問題

2021-10-01 04:51:30 字數 1094 閱讀 7718

一直被字串陣列以及指向字串指標所初的位址所困擾,然而今天第三次看c/c++安全編碼的

時候又遇見了這個問題,strlen(const char)所以我們要來思考以下這些周邊的問

#include

intmain

(void

)

[執行結果]

1.陣列中是 char const * a;確定指向的位址為某個初始值,然後裡面存是乙個位址,全域性變數區的位址,也就是a,b,c預設變數的位址

也就是說,陣列申請了連續的空間,但是裡面儲存的卻是零散的數值。

2.建立的空間的儲存位置跟看它是什麼變數,如果是區域性變數就在棧中

3. a[2]裡面存的是a 如果是&a[2]就是,&(a+2)的位址

4. 不是指向同乙個位址,陣列所指向的是a,b,c單獨的位址,而「abc」,才是連續的位址。

5. 「」就是表示建立乙個const char 陣列,' '代表著使用字元。

其實a就是乙個指標,只不過是乙個char const*a ,所以
int

main

(void);

char a=

;

p1 = a;

printf

("p1[0] = %c"

,p1[0]

);//輸出為a

}

1. 陣列為什麼必須是char const * a

我們知道,在c語言中記憶體分布是非常重要的存在,而建立陣列其實就是開闢一片空間,陣列都是開闢在棧

中的這是自動完成的,所以不用我們進行free(a),但是誰來釋放它,肯定是作業系統或者編譯器來釋放,但是編譯器根據

什麼來釋放,編譯器肯定是根據什麼來申請就什麼來釋放,所以必須是位址,所以為了方便編譯器釋放陣列在棧中所申請的空間必須固定首位址指標的值。

統計字串陣列裡重複的字串

題目 建立乙個長度是100的字串陣列,使用長度是2的隨機字元填充該字串陣列,統計這個字串陣列裡重複的字串有多少種?問題 第一次實現的時候出現重複次數總為100的情況,分析之後發現for迴圈有問題,問題 如下 for int i 0 i 如果這裡給j初始值為i的話,相當於i和j是同步變化的,然後s i...

指標陣列以及指向字串的理解

在看 c程式語言 第五章中,有一節指標陣列,看了還是很迷糊的,於是在電腦上寫了一些 得到了一些體驗,便記錄下來,倘若有說的不對的地方,請多多指教。我的c測試 如下 include int main void int i 0 while i 12 printf s n month name print...

指標陣列以及指向字串的理解

在看 c程式語言 第五章中,有一節指標陣列,看了還是很迷糊的,於是在電腦上寫了一些 得到了一些體驗,便記錄下來,倘若有說的不對的地方,請多多指教。我的c測試 如下 include int main void int i 0 while i 12 printf s n month name print...