c語言如何給指標引數賦值為null

2021-06-25 14:47:35 字數 3901 閱讀 6136

1樓:匿名使用者

想實現你的想法也不難,只要用指標的指標即可,下面是我寫的一個測試用例:

#include

void func(int ** p)

int main()

else

return 0;}

2樓:匿名使用者

樓主 其實很簡單,例如你定義一個int a;

然後把&a的帶入你的函式中,函式的形參為int *p;

在函式中把*p=null,不過最好是用巨集定義,把null定位0;

這樣a變數的地址所指向的值就變為0了

你要是有什麼不懂得可以找我

3樓:匿名使用者

用指標的引用即可.

例如:int memnull(int *¶m)在另一個函式裡呼叫它:

int *a;

memnull(a);

memnull執行完之後a的地址就被修改為null了.

或者可以用指標的指標:

int memalloc(int **param)呼叫的時候這樣呼叫:

int *a;

memnull(&a);

這樣memnull函式執行完後a的地址也會被修改為null.

同理其他操作,申請空間,改變指向等,也可以用指標的引用和指標的指標這兩種方法完成.不過還是推薦指標的引用,在寫**時不容易寫錯.

c語言函式宣告中將函式指標引數設定為null的預設值

4樓:匿名使用者

指定形參預設值是c++的語法,標準c是不支援這種語法的。

使用c++語法,通常可以儲存檔案時使用cpp字尾儲存。

另外,形參的預設值是在宣告函式原型的時候指定,不是在函式定義的時候指定。

c語言中怎樣給整型和字元型賦空值(null)

5樓:匿名使用者

空值這個概念實際上只是針對指標而言的。整型資料和字元的空值實際上就是一個預設值。整型資料的預設值是0,字元型資料的預設值是『\0』

6樓:匿名使用者

null在32位操抄作系統的記憶體中的襲表現就是0x0000 0000 0000 0000 0000 0000 0000 0000,即32位都為0,其值其實為0

所以,有

int i = 0; //讓i為null

char c = '\0'; //'\0'在記憶體中的表現也為一串0,等價與0和null

7樓:享耳三告

int a=null

char a='null'

,阿克斯碼 上null就代表空值

8樓:匿名使用者

null的值為0

int a=0;

char s=;

c語言中可以給指標變數賦值常數嗎?

9樓:會飛的小兔子

1、申請了空間(在常量區),存放了字串

2、在字串尾加上了'/0'

3、返回地址,這裡就是返回的地址賦值給了p

字串常量"hello"出現在一個表示式中時,"hello"表示式使用的值就是這些字元所儲存的地址(在常量區),而不是這些字元本身。所以,可以把字串賦值給指向字元的指標p,而不能把字串賦值給一個字元陣列。

chara[10]=「hello」;//這樣可以,這種情況是c語言初始化所支援的,如果寫成chara[10],然後a=「hello」這樣就錯誤了。同樣是a陣列,chara[10]=「hello」;這種是陣列的初始化,和a[0]=『h』a[1]=『e』,是一個道理。

換成chara[10],然後a=「hello」就不行了「hello」賦值的值是一個地址,而a雖然也有地址,但是這與指標是不一樣的,指標的值是地址,而陣列的值雖然也是地址,但是卻是一個常量,所以不能給常量賦值。

擴充套件資料

c語言中給指標變數賦值常數注意事項

在使用指標的時候,指標可以自增,而陣列不能自增,編譯器給陣列分配了空間,陣列a的地址就是一個常量了,讓常量自增這肯定是不行的。 在指標自增的時候,編譯器會自動識別型別,比如指標是指向int型的,想獲取下一個的地址時,指標直接p++就行了。

特別需要注意的是,在void指標使用的時候,不能使用指標運算,應為void型編譯器不能識別型別的長度(即指標所指物件的體積),p++這樣就是不合法的,即不能進行數**算,也不能使用*取值操作,想使用必須轉換為其它的型別。

10樓:a羅網天下

如:char *p,a='5';

p=&a;

p="abcd";

解析:p申請了空間(在常量區),存放了字串,所以最後可以返回地址。

以字串形式出現的,編譯器都會為該字串自動新增一個0作為結束符,如在**中寫

"abcd",那麼編譯器幫你儲存的是"abcd\0"。

1、定義指標變數的一般形式如下:

型別名*指標變數名1,*指標變數名2,... *指標變數名n ;

2、空指標

空指標是一個特殊的指標,它的值是0,c語言中用符號常量null(在stdio.h中定義)表示這個空值,並保證這個值不會是任何變數的地址。空指標對任何指標型別賦值都是合法的。

一個指標變數具有空指標值表示當前它沒有指向任何有意義的東西。

3、void指標

(void *)型別的指標叫通用指標,可以指向任何的變數,c語言允許直接把任何變數的地址作為指標賦給通用指標。

但是需要注意void*不能指向由const修飾的變數,例如第三句是非法的,只有將ptv宣告為const void * ptv;,上述第三句ptv = &test才是合法的。

當需要使用通用指標所指的資料參加運算時,需要寫出型別強制轉換。如通用指標ptv 所指空間的資料是整型資料,p是整型指標,用此式轉換:p=(int *)ptv;

11樓:匿名使用者

賦值當然可以啊,不能用地址引用

舉例://int

int * p = new int;

*p = c_int_1; //這個是可以的,賦值p= c_int_1; //這個不可以,地址複製了//字串

char * p;

p = "abc"; //字串這樣就可以,因為這個常量編譯器自動賦予了空間

12樓:今天沒有睡

不可以 因為這是不可預見的 如果指到了你記憶體中的重要訊息,電腦可能會出問題啊,所以千萬不要賦常數給指標變數

13樓:匿名使用者

準確地說,只能賦值0,其他的都不合法

14樓:匿名使用者

不能,變數怎麼能賦值呢,變數時變化的不是一定值

15樓:匿名使用者

只有字元指標可以,直接等於字串常量

16樓:匿名使用者

不可以 指標變數只能指向地址

17樓:情漫都市

一般不允許。很可能系統報錯

18樓:匿名使用者

指標時用來存放地址的!地址就是個常數啊!所以這樣是能編譯通過的!

但是,這樣執行會出錯(段錯誤)的!因為指標本來是存放地址的,而你卻存放了一個常數(即一個不合法的地址),這樣就會使指標指向不確定的記憶體單元(非法訪問),從而出現錯誤!

c語言中想給指標p賦空值那麼p=null和p=nul哪個對?

19樓:匿名使用者

都對,因為他們的值都是0,只不過null是為空指標而生,nul是一般作為字串終止符的

20樓:匿名使用者

int *p = null

C語言中可以給指標變數賦值常數嗎

1 申請了空間 在常量區 存放了字串 2 在字串尾加上了 0 3 返回地址,這裡就是返回的地址賦值給了p 字串常量 hello 出現在一個表示式中時,hello 表示式使用的值就是這些字元所儲存的地址 在常量區 而不是這些字元本身。所以,可以把字串賦值給指向字元的指標p,而不能把字串賦值給一個字元陣...

c語言陣列賦值問題,c語言中如何給陣列定義並賦初值?

我不清楚你想問什麼,不過第二種寫法是對的。char chars 11 是定義了一個初始值為空總數為11的字元陣列。char s c language 定義一個總數為11的字元陣列,但是有初值。注意是11個不是10個,用這種方定義的字元陣列末尾會加一個 0。陣列的賦值通常是使用花括號來表示的,但是字元...

c語言指標程式設計下面的選項中正確的賦值語句是(char a

根據c c 規定,abcd 可是為字串的地址 另外就是陣列的不可以直接賦值,但可以在初始化時進行賦值,即 正確 char a 10 abcd 錯誤 char a 10 a 10 abcd 對地址的操作當然是和指標相關聯,顯然a是正確的 b選項可以排除,其實a可以理解為指標常量 c選項左右兩邊不是等級...