C 中的字串指標和陣列問題

時間 2022-10-25 00:20:48

1樓:匿名使用者

你用的vc吧。

#include

using namespace std;

main()

這段**在vc下有警告,但不能執行。

但是在codeblocks下編譯執行這段**,沒有警告,可正確執行。

vc的編譯器老一些了~

vc下你改成char *q = new char;就可以了~這才為p分配了記憶體空間,執行q[0]='s'並不能為其分配空間。

2樓:匿名使用者

char *q沒有為q分配指向的空間

3樓:匿名使用者

q為指標,使用前要先分配空間

一般情況下,指標也可以看成陣列的,相當於陣列的頭元素

編譯的時候不會看你的指標是否已分配位址,只有符合詞法,語法,語義通順就可能通過了。

4樓:匿名使用者

額,你要麼就

char q; q = 's';

要麼就char *q; q = "s"; //"s"這裡是字串了要麼就char *q;

q = new char[10]; //分配乙個10個字元的空間q[0] = 's';

因為你想啊,你既然定義了乙個陣列(或指標,初始為null),卻不給定維度,那讓系統則呢麼處理呢?如果在不預先分配空間的情況下,直接q[0]='s',那照裡來說q[65535]='s'也是可以的咯?q[+inf]='s'也應該可以咯?

所以我以上給的三種情況,

其中第二種直接付給乙個字串"s",這個"s"已經在記憶體中了,所以這種情況系統會把這個字串的頭字母的位址傳給q;

或者第三種情況,你給q申請了乙個10個char的空間,這樣系統就可以讓你合法的對其進行操作了~~~

指標概念很難懂啊,我當年學了好久。。

5樓:匿名使用者

char *q; 宣告乙個char型指標,

但沒有分配記憶體,所以執行會出錯.

執行q[0]='s',並不會自動分配記憶體。

6樓:匿名使用者

c++沒那麼只能q[0]='s'得時候直接把's'放到q[0]的空間上去了

c 字串中插入字元,C 字串中插入字元

include stdio.h define aac 20 define bac 20 define sac 100 int main sac j 0 printf s sac return 0 經過測試,請安心使用 凡鳥 我用str.replace 為什麼替換出來被替換的部分就成了亂碼 是兩個字元...

C語言字元陣列的指標問題,C語言字串指標問題

這個就是看你對指標的理解了 char name 相當於你定義了乙個char 的指標陣列,每個陣列元素指向乙個字串。char name 表示你定義了乙個字元陣列,而你初始化的時候,確實字串,肯定編譯不過的。是不是二維陣列,就看你怎麼理解了,char name 中的name相當於char char na...

c語言字串指標 我對字元指標這方面特別特別混,各位給解釋一下下面的

首先,乙個完整的字串要以0值結尾,所以你開設char a 8 實際上只能存放7個字元的字串,最後乙個a 7 應當是0表示字串結尾。那麼假設你輸入了asdfghj。cin a 在編譯器看a的定義知道你要輸入字串,因為a是乙個字元型 陣列 指標 cin a 0 在編譯器看a 0 的定義知道你要輸入乙個字...

c語言中的字串指標釋放free問題

1 free函式 原型 void free void ptr 功能 釋放malloc 或calloc realloc 函式給指標變數分配的動態記憶體 標頭檔案 malloc.h或stdlib.h 2 為了避免釋放已經釋放了記憶體的指標記憶體,或沒有釋放記憶體,在c語言中最好是在定義指標時賦初值nul...

如何用c語言分離字串中的字母和數字並分別輸出

把字串存放到陣列裡面,乙個乙個比對 迴圈 後輸出判斷數字 for i 0 iif p i 0 p i 9 printf 判斷字母 for i 0 iif p i a p i z printf 先定義兩個字串陣列變數a,b。然後把原來的字串進行遍歷,判斷每個字元的acssii碼。在數字區間的存在a中。...