『壹』 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是一回事。