1. c語言指針的初始化!!!!
指針指向變數後才能操作,如:int *pt,a;pt=&a;*pt=5;第二個char *i;i="Hello";這樣是正確的.
2. C語言文件輸出指針初始化
FILE*fp_in=NULL,*fp_out=NULL;
if(fp_in)fclose(fp_in);
if(fp_out)fclose(fp_out);
把你那三行,改成我這樣的,因為可能沒有初始化啊。。。
3. C語言的char指針初始化理解
char 指針,也就是char *類型。 其初始化本質上與其它變數初始化沒有什麼區別,就是賦予其一個初始化的值。
對於指針來說,在C語言中,就是一個地址。區分初始化情況,有四種表象:
1 初始化為空。即
char * str = NULL;
的形式,NULL在C語言中是特定的空指針,其值為0.在C語言中,以NULL作為指針的一個未生效狀態,其本身是一個非法的地址值。
2 初始化為常量字元串地址。
char * str = "test";
常量字元串在運行時會被放在常量空間中,於是這樣初始化後,地址是常量空間中的一個地址,對於該地址只能讀取,不可寫入。即str的值可以改,但是str指向的值是不可修改的。
3 初始化為變數地址。
這里的變數地址,包括全局變數,局部變數的地址,以及通過動態分配申請到的內存地址。
這種情況下,對指針指向的空間是可以修改的。
4 不做初始化。
這種情況在C語言中是允許的。如果為全局變數或靜態局部變數,系統默認初始化為0值,即NULL。而對於局部變數,將是一個隨機值。所以如果是局部變數不做初始化,在取其指向空間值前,必須為其指定一個合法的值,否則訪問會出錯。
4. c語言指針初始化
注意了,a只是一個雙重指針,不是數組。還有new這個東西是C++中的。C中用malloc分配內存,再初始化。