『壹』 c語言 指針變數的初始化問題
變數的初始化就是在定義變數的時候,直接對變數進行賦值操作。初始化的方式一般有如下兩種:1、直接對變數進行賦予常量數值進行初始化;2、通過同類型變數進行初始化。舉例說明如下://
以下屬於第1種初始化方式int
a1=5;
//
整型變數的初始化int
b1[]={1,2,3,4};
//
整型數組的初始化char
str1[]="abcd";
//
字元數組的初始化//
以下屬於第2種初始化方式int
a2
=
a1;
//
整型變數的初始化int
b2[4]
=
b1;
//
整型數組的初始化char
str2[4]
=
str1;//
字元數組的初始化char
*p
=
str1;
//
字元指針的初始化
『貳』 C語言結構體指針變數初始化
void RegList(LB *L) //初始化線性表(建立頭結點,指針域置為空)
{
L=(LB *)malloc(sizeof(LB));
L->next=NULL;
}
改成指針的指針 調用的時候RegList(&k);就行了。
void RegList(LB **L)
{
*L = (LB*)malloc(sizeof(LB));
(*L)->next = NULL;
}
『叄』 c語言指針初始化
注意了,a只是一個雙重指針,不是數組。還有new這個東西是C++中的。C中用malloc分配內存,再初始化。
『肆』 C語言中指針變數的初始化有幾種請分別舉例並說明。
我覺得有三種吧。
a.賦值一個已有變數的地址
int a;
int *p=&a;
b.新開辟一塊內存空間
int *p=(int*)malloc(size(int));
c.賦空值
int *p=NULL;
『伍』 C語言 指向指針的指針變數的初始化
樓上的回答編譯器是不允許通過的。程序員無權給指針直接賦常量值。
int a =2;
int * p = &a;
int **q = &p;//指向指針的指針變數初始化;
int * i,j,k =&a;
int *r[3] = { i,j,k};//指針數組初始化。
『陸』 C語言結構體指針變數初始化
void
RegList(LB
*L)
//初始化線性表(建立頭結點,指針域置為空)
{
L=(LB
*)malloc(sizeof(LB));
L->next=NULL;
}
改成指針的指針
調用的時候RegList(&k);就行了。
void
RegList(LB
**L)
{
*L
=
(LB*)malloc(sizeof(LB));
(*L)->next
=
NULL;
}
『柒』 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。而對於局部變數,將是一個隨機值。所以如果是局部變數不做初始化,在取其指向空間值前,必須為其指定一個合法的值,否則訪問會出錯。
『捌』 c語言變數初始化的方式
全局變數的初始化 對於不同編譯單位的全局變數,其初始化的順序沒有任何的保證,因此對不同編譯單位里的全局變數,在它們的初始化順序之間建立依賴性都是不明智的。 此外也沒辦法捕捉到全局變數初始化拋出的異常,一般來說要減少全局變數的使用,特別是限制那些要求復雜初始化的全局變數。
1,盡量不用全局變數
2,用靜態變數,通過訪問器進行訪問 例如:全局變數
int a = 5;
int b = a;
如果a,和b定義在同一個文件里,那沒什麼問題,結果b等於5.
如果a和b定義在不同文件里,就不能保證b也等於5,也就是說不能保證a先初始化. 事實上,除了在同一個文件定義的全局對象的初始化是按照定義次序來進行的之外,其他全局或靜態變數之間的初始化次序沒有任何保障。解決這種問題的方法是不直接使用全局變數,而改用一個包裝函數來訪問,例如
int get_a()
{
static int a = 5;
return a;
}
int get_b()
{
static int b = get_a();
return b;
}
『玖』 C語言:指針變數的初始化可以從鍵盤輸入一個數,即int *ps; scanf("%d", ps);這句話為什麼錯
首先這句話是錯的,原因是如題中的語句
scanf("%d", ps);表示的是從鍵盤輸入一個整數,這個整數存放到ps所指向的內存空間,這里並不是要給ps本身進行初始化。
此語句之前如果ps沒有初始化,那執行此語句程序可能會崩潰,所以指針使用前一定要記得先初始化。
如果想要靠輸入給指針初始化,那對應語句應該是scanf("%d", &ps);不過這樣做實際沒啥意義,這樣做也挺危險。如果後面用這個指針往裡面寫內容可能會程序崩潰,甚至你的系統會崩潰。
『拾』 C語言指針的初始化!!!!
指針指向變數後才能操作,如:int *pt,a;pt=&a;*pt=5;第二個char *i;i="Hello";這樣是正確的.