當前位置:首頁 » 編程語言 » c語言指針的0
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針的0

發布時間: 2022-08-01 01:14:34

『壹』 c語言中指針p!=0和p!=NULL一樣嗎

應該來說是不一樣的因為NULL是宏,雖然被定義為0,但是開發人員如果自己定義了NULL不為0兩者就不一樣了

『貳』 C語言指針賦值0會產生什麼結果

不會產生什麼結果,這樣初始化後,可以用來判斷這個指針是否被分配過地址,或者是否指向某個地址

『叄』 C++中的指針可以賦值為0,C語言中指針可以賦值為0嗎

可以。只有0有這個特權,無論什麼類型的非常指針,在任何時候都可以直接賦0值來表示這個指針不可用。

『肆』 C語言指針變數賦值0是什麼意思

其實這種現象在C語言中是有定義的。
值為0的整形常數表達式或強制轉換為void *類型的表達式可通過強制類型轉換、賦值或比較操作轉換為任意類型的指針。其結果將產生一個空指針。

『伍』 C語言中 零指針/類型指針 怎麼使用

void*類型指針表示此指針可以指向任何類型,定義時它沒有類型,為空類型,所以必須強制性轉換;
零指針的作用就是防止指針指向一個不確定的內存空間而引起錯誤,因為指針在定義完之後必須進行初始化,使其指向一個確定的內存空間,否則的話,它就是一個不確定的指針,容易引起錯誤!!
下面一個好,是正確的;但是上面那個有問題,因為p指針沒有初始化,沒有確定指向一個內存空間,是錯誤的,應該把*p=i;
改為p=&i;就好了
(要轉換成的數據類型)要轉換的變數,
例如(int)a;就是把a強制轉換成int類型!!

『陸』 c語言指針用法

1、使用場景

使用指針時,必須將它指向一個變數的地址或者為它分配空間方能使用,如下所示:

#include<stdio.h>

#include <stdlib.h>

int main(int argc, char const *argv[])

{

int a[5]={0,1,2,3,4};

int *b,*d;

int c=2;

int *e=a; //e指向a數組首地址

//*b=2; 無法直接初始化

//printf("%d ", *b);

e=e+2; //移動兩個地址單元

d=&c; //d指向c的地址來表示值

c=4; //修改原c變數的值,d指針的值會發生改變

b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接存儲

*b=2;//分配空間後可以直接賦值了

printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);

2、類型說明

(1)int *a :表示一個指向int型變數的指針,指向的是變數的地址單元

(2)char *b:表示一個指向char變數的指針

*a表示的是這個指針指向地址的值,a為此指針本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:

int nums[5]={0,1,2,3,4};

int *a=nums;

printf("%d %d %p ",*a,*(a+1),a);

(6)c語言指針的0擴展閱讀:

指針的運算

指針指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算

(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。

int nums[5]={0,1,2,3,4};

int *a=nums;

(2)地址運算:通過a+i的方式.指針會指向a的下i個地址。

int nums[5]={0,1,2,3,4};

int *a=nums;

a=a+2;

printf("%d ",*a);

結果輸出2。

參考資料來源 :指針-網路

『柒』 c語言中指針的指針會等於0嗎

假如有一個指針P,語句if(p==0);和語句if(p==NULL)是同一個意思,其實NULL 就是 一個 為0 的宏。可能你提問的方式會讓很多人不懂,估計你就是想要我說的這個意思的吧。

『捌』 c語言指針的指針的理解

指針,即指向數據的儲存地址,方便計算機尋找數據,可以指向變數,函數,數組,甚至指向指針(如int **point),組合起來,好多方式。定義並指向一個變數後,沒*,point代表變數地址,有*,代表地址里的值即變數值,指向指針的指針**point分開理解,首先指向*point,而*point代表變數的值

『玖』 C語言中*p=0表示

也得看p的定義了
如果int *p;*p=0;則是把p執行的int空間的值修改為0
如果int **p;*p=0;則是把指向int空間的指針置為0。
上面這幾個例子,都得考慮p是否指向了有效內存位置,否則是危險的操作。

完整的範例:
int a;
int *p=&a;
*p=0;
相當於p指向的int空間,即a的值被改為0了

如果p是更多級的指針或是指向更復雜的內存,可以把一級指針之外的內容看成一個整體,比如:
int **p;
可以先 typedef int *IntPointer;
IntPointer *p;
然後*p=0;
就是把p指向的IntPointer空間的值置為0.
諸如此類。

『拾』 C語言中空指針0與NULL相同嗎

C語言的0和NULL的確是相同的,NULL其實是一個#define定義,在每一種C語言編譯器中都有頭文件來定義NULL這個符號,NULL的定義類似於這樣:
#define NULL 0
所以空指針0和空指針NULL是一回事。