C,C 中關於char以及char陣列的問題

2021-06-25 14:44:04 字數 2357 閱讀 8533

1樓:veket的小號

1.因為 iostream內部 cin cout 對char* 做了特殊處理.......因為c/c++ 輸入輸出字串通常要用到char*

如果直接輸出地址,就要用別的方法來輸出字串了 就不方便了.....所以直接輸出地址 那裡放著的字串......

3、sizeof("hello");得到 字串實際長度 + \0 佔的一個位元組

一般用strlen函式.......

同 1、2,str陣列名 是 char* 地址

2樓:愛問西瓜愛答樹

pstr是指標,*pstr,取地址的內容。顯示什麼,這個取決於cout用哪個函式,由引數型別決定。想輸出字串的地址用char str2="123abc";

2.arr是陣列,是首地址。int * ,表示指向的地址空間是int 4位元組的,char *當然是char 1位元組的。

3.sizeof("hello");

4.cout有個對字串輸出的過載,全部輸出,遇到'\0'結束。

3樓:匿名使用者

運算子過載可以做任何事情,沒有任何規則所只要是地址列印出就是地址。而且char*是特殊的,從來沒有在哪輸出過地址

運算子過載,不是int/char不同,而是過載後int*和char*不同

sizeof("hello"),這是唯一的辦法,賦值給指標後只能用strlen,不能用sizeof

同樣,不要總想著引數是地址,輸出也是地址,如果這樣,高階語言就太無用了

4樓:

1、這是cout(const char *)函式的定義。為方便處理字串。

2、字串是陣列,int只是一個數;

3、include

4、同1.

c++關於char陣列的問題

5樓:

①可為什麼下標引用超出定義沒有錯誤

因為宣告char陣列的時候,b只是被宣告為指向char陣列第一個地址的指標。用操作符取資料的時候,編譯器看成是首地址向後偏移 (char型別的長度 * 序號),超過了界限之後,至於後邊取到什麼意外資料就不一定了。所以一般需要使用char陣列儲存一個長度為n的字串的時候都宣告n+1長度,然後,操作完後把b[1]='\0'。

如:char dog[4] = ;

char wolf[4] = "ply";//引號括起來的字串隱藏帶'\0'

②果把下面for部分取消註釋執行結果又只能輸出一個d,這裡又是怎麼回事

for(i=0;i<=(sizeof(b)/sizeof(b[0])-1);i++);

看到沒,你在括號後邊多加了個分號,執行完i就=3了,然後就輸出b[3]了。。。

③不帶宣告陣列大小

char b=;

另外關於字元陣列:

sizeof(陣列)計算的是整個陣列的長度。而strlen()計算的是陣列中可見字串的長度。

char表示的字串是c風格的字串,後面都要有'\0',否則不是字串;引號括起來的字串隱藏帶'\0':

初始化時陣列長度不設時,編譯器會根據內容計算元素個數:int myarray =

陣列只有初始化時可以用“=”,其它時候均不可以給陣列直接賦值。

還有什麼。。。可以用cin.get(char, num)來輸入。。還有一時想不起來了。。。

c++char型陣列問題

6樓:天一弦劍

糾正你bai的**

du:int n;

cin >> n;

char *string=new char[n + 1];

for(int i=0;i試吧,zhi 記住:字元dao串是版以'\0'結束權的。

7樓:匿名使用者

我倒是奇bai怪了,你這程式能編譯?du首先cin<< 輸入應zhi該是cin>>吧,然後你的

daoc從哪蹦內出來的?

容宣告在哪? 可能是你的程式不給完整吧,在別的地方宣告瞭?那得標示出來,要不怎麼看你程式的問題在哪咯?

最後,你用了自由儲存空間,卻沒有用delet釋放記憶體歸還給計算機。。。

8樓:匿名使用者

你的c是什麼啊

而且cin的格式應該是cin>>n;

9樓:谷岑僪昭昭

糾正你的**:

intn;

cin>>

n;char

*string=new

char[n

+1];

for(int

i=0;i,

記住:字串是以

回'\0'結束答的。

char轉成int,在c 中char型別的陣列裡邊裝的是數字,如何轉換為int型別?

孤傲。12 07 10 15 08 09 52 54那是因為一個整數佔4個位元組,一個char只佔一個位元組,當int轉char時,會選擇int的低四位來付給char,而現在257在記憶體中為10000000 00000000 00000001 00000001把最後的00000001付給了char...

c語言結構體中的char陣列怎麼賦值

常用兩種措施 在宣告結構體變數時初始化,如 include stdafx.h if the vc 6.0,with this line.include stdio.h struct stu int main void 這樣初始化printf d s n s.x,s.name return 0 向陣列...

c 中char型別變數如何轉換成int型別變數

在ascii碼中數字 0 9 的編碼是48 57,所以你減一個 0 或者減一個48都可以。從 char 到 int 屬於 從短到長 的轉換,而從 int 到 char 則為 從長到短 的轉換。短到長時,系統會自動提升,會將1個位元組的char型別資料擴充到4個位元組 32位系統 對於無符號型別來說,...