指標的賦值的問題
前提 :
在寫樹的時候,發現一個關於指標的問題,想了一會才想到為什麼,記錄
問題:
用指標n讓p指向一個記憶體
#include <iostream>
using namespace std;
int main()
{
int* p = NULL;
int* n = p;
n = new int(4);
delete n;
system("pause");
return 0;
}
分析:
1.int* p = NULL; int* n = p;
2. n = new int(4);
明顯錯誤 正確方式應該是n存入p的地址,然後進行賦值
修改:
#include <iostream> using namespace std; int main() { int* p = NULL; int** n = &p; (*n) = new int(4); delete n; system("pause"); return 0; }
圖示:
-
int* p = NULL; int** n = &p;
-
(*n) = new int(4);
相關推薦
使用char指標賦值引發警告deprecated conversion from string constant to ‘char星’
最近在做demo的時候遇到如下警告。 warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] 參考程式碼為: #include <stdio.h>
為什麼低階非const指標不能越級向高階const指標賦值
c/c++: 為什麼不能低階非const指標越級向高階const指標賦值的問題 const int n=11; int *p; int **pp; const int ***ppp=&pp;//INVALID const int ***ppp1=&
C++類 給結構體成員 函式指標 賦值
myStruct標頭檔案 myStruct.h class CMyClass; struct { int nFlag; void (CMyClass::*myinit)(int n); void (CMyClass::*myopen)(int n,void* arg)
C語言指標賦值0會產生什麼結果?
思考一下對指標賦值為0會產生什麼結果? 用編譯器試驗了一下 會得到一個空指標! 其實這種現象在C語言中是有定義的。 值為0的整形常數表示式或強制轉換為void *型別的表示式可通過強制型別轉換、賦值
將NULL指標賦值給std::string變數導致程式崩潰
如題:如上圖,但是我們還會經常寫這樣的程式碼,例如我的flamingo中有程式碼如下(已經修正):位於queryresult.cpp中如果fields[i].name為NULL的話,程式將崩潰。備忘一下
結構體中指標賦值問題的分析及C程式碼示例
問題描述 某結構體的定義如下: typedef struct { int iAge; // 年齡 char szAddr1[100]; // 地址1 char *psz
為結構體中函式指標賦值的兩種方法
/** 02. * 為結構體中的指標陣列賦值 03. */ 04. 05.#include <stdio.h> 06. 07.typedef struct test 08.{ 09. void (*p)(void); 10.
將字串指標賦值給陣列
比如 char *p=”sdflkjasljfsjlsdfsa”; char p1[200]; 將p賦給p1 (1)strcpy(p1,p); (2)char *src=”helloworld”; char des[100]={0};
指標賦值為NULL;是什麼意思呢?
int *p=NULL;這個NULL是什麼意思? 網上百度了下,有人說NULL=0;是在標頭檔案中定義的; 首先要說的是:非堆分配的記憶體是不需要free的。 再說p=NULL;指標的變化是 p指向了一個地址為0的記憶體,這就提醒別人不要對這個
二維陣列給指標賦值 和一維陣列的區別
#include <stdio.h> #include <malloc.h> void printArray(int a[], int size) { int i = 0; printf("printArray: %d\n"
C++ 指標的兩種操作,通過指標賦值 & 對指標賦值
// 列印函式 template <typename T> void disp(T i) { cout<<i<<endl; } int main() {
學會使用malloc,學會對指標賦值
先看一個程式,其實這是我編的一個不算小的程式裡面的片斷,把曾經遇到的問題寫出來: #include<stdio.h> int main(void){char *a;//a=(char *)malloc(20);a=gets(a);//scanf("%s",a);/
php 陣列 引用賦值 陣列指標的幾個函式 遍歷陣列
1. 複製一個數組,就是把一個數組賦值給一個變數便可。會把陣列指標位置一同複製。這裡面有兩種情況。一,指標位置合法,這時直接複製,無影響。二,原陣列指標位置非法時,“新”陣列指標會初始化。(這裡的新字為什麼要加引號?請看下文)先看例子: 出現這種情
當類的指標被賦值為NULL時,類的哪些成員還可以被該指標呼叫
轉自:https://blog.csdn.net/xiaoluer/article/details/53337292 該問題源自於一道面試題,題目如下所示: 看如下程式碼,請問能不能編譯通過?如果能編譯通過能不能執行成功?並說明原因 clas
[C]關於函式指標引數的賦值
問題 在有一次嘗試用stat()函式獲取檔案屬性的時候,發現如果直接宣告一個指標,然後把這個指標作為引數傳給函式,會導致函式執行失敗,原始碼: #include <sys/stat.h> #include <unistd.h> #include <stdio.h>
空指標在主函式中被賦值與在呼叫函式中被賦值的差別
# include <stdio.h> int main() { int a=10; int *p=&a; p=NULL; printf("%d\n",*p); return 0; } 在這個程式中因為將a的地址賦值給指標p
C語言中指標中的值賦值給陣列
如果把各種語言做個冷兵器類比的話,C語言一定是刀客的最佳工具.入門很簡單,但是要是能把它熟練運用,那就是頂尖級別的高手了. 用了那麼多年的C語言,發現自己還是僅僅處於熟練的操作工.今天遇到了一個bug,就是和指標的賦值有關係.請看程式碼: 1 #include <stdio.h>
指標能用立即數直接賦值嗎?
學習的過程中產生了這個疑問:指標變數本身是一個地址,那麼能直接用地址的值賦給指標嗎? 答案是可以,只要加一個型別強制轉換,比如定義了 int * p; 可以接著 p=(int*) 0x04; 此時我又想,那麼可以把一個存著地址的變數直接賦給指標嗎? 直接賦當然不可以
避免野指標&&間接賦值
/************************** 避免產生野指標的三個步驟。 1.定義指標時候,初始化為NULL 2.釋放指標所指向的記憶體空間的時候,判斷是不是NULL,避免重複釋放。 3.釋放指標所指向的記憶體空間後,把指標重置為NULL。*************
指標的賦值的問題
前提 : 在寫樹的時候,發現一個關於指標的問題,想了一會才想到為什麼,記錄 問題: 用指標n讓p指向一個記憶體 #include <iostream> using namespace std; int main() { int* p = NULL;