1樓:小何才露尖尖角兒
我來答:char *p ,只是定義了乙個指標,指標的型別是char,但是這個指標沒有賦初值,所以指向了乙個可能是不可寫的區域,而fin.getline(str,256))這一句試圖把一些字元寫到指標指向的記憶體區域,顯然是不對的。
你還有什麼疑問沒有。這個地方,沒有任何的好辦法,就得定義乙個陣列。
2樓:
str是乙個字元指標型別的變數,編譯器只給它分配4個位元組,用於儲存乙個位址值,這個位址值就是指標指向的地方。
你沒有讓str指向某塊固有記憶體,也沒手動分配一塊記憶體,然後自己控制指標指向它。
使用char str[256];編譯器自動給str分配了256個位元組的空間,str指向了這片記憶體,str本身存的是這片記憶體的首位址!
你還可以char *str;
str=new char[256];
這樣來在堆裡面分配256個位元組,並把申請記憶體返回的首位址賦值給str。這樣操作,最好使用完畢後,手動釋放記憶體,delete str;
C語言的基礎問題,C語言的乙個基礎問題
分配的記憶體大小不一樣,簡單說,long型可以儲存的資料比int型的大!c語言規定,sizeof short sizeof int sizeof long 但是long一定要大於short 在不同的目標平台上,用這兩個關鍵字定義的變數占用的儲存空間可能相同,也可能不同。32位的系統中sizeof l...
C語言的基礎概念問題,關於c語言的基礎問題
二元運算 由兩個元素形成第三個元素的一種規則。例如數的加法及乘法 更一般地,由兩個集合形成第三個集合的產生方法,或構成規則,稱為二元運算。從二元運算的定義可以看出,賦值不是由兩個元素形成第三個元素,所以賦值運算子不是二元運算子。二元運算子 二元運算子是寫在執行運算的子表示式對之間的運算子。是運算子,...
問C語言資料結構的基礎問題,問乙個C語言資料結構的基礎問題
e是int指標 e是e所指向的int變數 s data是int陣列 1 e是int變數,可以儲存s data陣列中的乙個整數2 e中儲存的是陣列s data中的乙個值3 傳回的 e在函式外面看的時候,名字不叫 e,所以輸出時,本來叫什麼就怎麼輸出 比如你有乙個sqstack的指標叫s,現在想取棧頂的...