為什麼char型指標可以直接賦值而其他型別的不行呢?個人見解
char *bb="abc";
系統把 "123" 放在了靜態儲存區裡,棧裡放了 aa 這個指標變數,指向了 "123"這個地址。
char aaa[] = "123";
char bbb[] = "123";
是系統在棧裡面放了兩個字元陣列變數,互相無任何關聯,因此它的aaa與bbb不會相等。 角度二(指標內容和地址): aa和bb存的都是相同的指標地址。
aaa和bbb雖然都是 "abc",但地址不一樣。
問題總結: 既然這個問題能夠理解清楚,那麼從這兩個角度來說,給指標一個內容那麼就不能跟我們傳統意義上的“賦值”相提並論。因為對於問題中int *a = 1;來說這個1 是整型資料不能放入靜態儲存區。而從內容和地址來說,如果像上述兩種賦值方式得到的只能是記憶體的地址,而不是內容。
相關推薦
為什麼char型指標可以直接賦值而其他型別的不行呢?個人見解
char *aa="abc";char *bb="abc"; 系統把 "123" 放在了靜態儲存區裡,棧裡放了 aa 這個指標變數,指向了 "123"這個地址。 char aaa[] = "123"; char bbb[] = "123"; 是系統在棧裡面放了兩個字元陣列變數,互相無任何關聯,因此
使用反射繞過泛型,直接賦值
public class GenericsTest { public static void main(String[] args) { ArrayList<String> collection1 = new ArrayList(); collection1.add("abc");
指標能用立即數直接賦值嗎?
學習的過程中產生了這個疑問:指標變數本身是一個地址,那麼能直接用地址的值賦給指標嗎? 答案是可以,只要加一個型別強制轉換,比如定義了 int * p; 可以接著 p=(int*) 0x04; 此時我又想,那麼可以把一個存著地址的變數直接賦給指標嗎? 直接賦當然不可以
陣列與字串、字元指標與其他型別指標、賦值引數、指標引數以及引用引數、函式指標
◆陣列和字串 從表面上看,一個字串就是一個字元陣列,但在C++語句中,兩者並不完全相同。 字串是一個以串尾符"\0"結尾的字元型陣列,但任一個字元型陣列不見得必為字串(因為其中可以不包含"\0"結尾字元)。 char string1[7]="China";char string2[]="China";ch
簡單的問題:char指標無法賦值
一個簡單的問題: char* str = "resource"; str[6] = 'k'; //這句報記憶體寫入錯誤 *(str+6) = 'k'; //這樣寫同樣報錯 但是這樣就沒問題: char* str = new char[1
C++構造函數對類成員變量初始化,使用初始化列表和構造函數內部直接賦值 的差別
初始化列表 不能 構造 調用 ron 二次 art size strong 初始化和賦值對內置類型的成員沒有什麽大的差別,像任一個構造函數都能夠。但有的時候必須用帶有初始化列表的構造函數: (1) 成員類型是沒有默認構造函數的類。若沒有提供顯式初始化時,則編譯器隱式
Python 直接賦值、淺拷貝和深度拷貝解析
log epc uno amp 技術分享 example 內部 clas color 直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。 深拷貝(deepcopy): copy 模塊的 deepcopy
java中String new和直接賦值的區別
字符串相同 main 基礎 還需 賦值 請問 常量 int 表達 Java中String new和直接賦值的區別 對於字符串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的
Python 直接賦值、淺拷貝和深度拷貝全解析
ima img 引入 對象的引用 print function 引用 輸出結果 ons 直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。 深拷貝(deepcopy): copy 模塊的 deepcopy 方法
【shell】Linux shell 直接賦值和間接賦值
shell linux 變量 運維 什麽是直接賦值? 1.作者直接賦予參數值的方式稱為直接賦值。 2.一般來說,由交互的方式賦值為間接賦值。 例1: varl=arppinging.com 這種就是直接賦值,由編程作者直接賦予固定的值。 例2: [root@arppinging ~]# re
Python直接賦值、淺拷貝和深度拷貝解析
rabl iterable bject nes 返回值 元祖 列表 深度 拷貝 ython 文件 writelines() 方法用於向文件中寫入一序列的字符串。 這一序列字符串可以是由叠代對象產生的,如一個字符串列表。 換行需要制定換行符 \n。 語法 writelines
直接賦值and深淺拷貝
epc 圖片 分享 修改 img 都是 列表 import 變量 # 直接賦值,之後變量應用的都是同一個id()地址,後續修改所用飲用也會修改num1=[1,2,3,4]num2=num1print(id(num1))print(id(num2))num2[0]=111pr
Java中字串直接賦值和new一個物件,得到的地址值是什麼樣子的
public class StringDemo2 { public static void main(String[] args) { String s1 = "hello"; String s2 = new String("hello"); String s3 = "hello"
當類的指標被賦值為NULL時,類的哪些成員還可以被該指標呼叫
轉自:https://blog.csdn.net/xiaoluer/article/details/53337292 該問題源自於一道面試題,題目如下所示: 看如下程式碼,請問能不能編譯通過?如果能編譯通過能不能執行成功?並說明原因 clas
JAVA之String直接賦值和使用new賦值的區別
String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能建立一個或者不建立物件。如果”ABC”這個字串在java String池裡不存在,會在java String池裡建立一個建立一個String物件
X++: select 查詢結果直接賦值給一個變數
//AEL_ReplacementNote_detail 為table名 如果用這種方式直接將查詢結果賦值給一個變數,那麼from那裡就要用table名. real lvQty=(select sum(AEL_rld_req_qty) from AEL_ReplacementNote_deta
python直接賦值、深拷貝和淺拷貝
python中,物件賦值實際上是物件的引用。當建立一個物件,將其賦值給另一個變數,python並沒有拷貝這個物件,而是拷貝了這個物件的引用。 所以如果從單純的賦值語句來實現clone物件的話, 那可能bug出現的也會莫名其妙. Python中可以使用copy模組來複制物件.
避免野指標&&間接賦值
/************************** 避免產生野指標的三個步驟。 1.定義指標時候,初始化為NULL 2.釋放指標所指向的記憶體空間的時候,判斷是不是NULL,避免重複釋放。 3.釋放指標所指向的記憶體空間後,把指標重置為NULL。*************
C語言用結構體給另一個同類型結構體賦值: 用等號即可
看到很多C程式碼的結構體賦值都是用memcpy函式來拷貝,其實根本不需要,用等號直接賦值即可。結構體描述的是的一塊連續記憶體的記憶體佈局,同類型的一個結構體變數給另一個結構體變數賦值,使用等號編譯不會有任何問題,其效果顯然也和人直覺認為的一樣,拷貝對應記憶體。
指標的賦值的問題
前提 : 在寫樹的時候,發現一個關於指標的問題,想了一會才想到為什麼,記錄 問題: 用指標n讓p指向一個記憶體 #include <iostream> using namespace std; int main() { int* p = NULL;