c 指標問題

2023-02-10 10:55:33 字數 1549 閱讀 9974

1樓:匿名使用者

第一個程式 a指向的內容是一個常量,所以不可更改

第二個程式,為b分配了空間,又讓a指向b指向的記憶體,所以是可以更改的

下面是對這個問題的測試**,

#include

#include

using namespace std;

#include

int main()

//從這個例子可以看出,在適當的時候加上const是必要的

8: char *a = "srring";

00401028 mov dword ptr [ebp-4],offset string "srring" (0041402c)

9: *(a+1) = 't';

0040102f mov eax,dword ptr [ebp-4]

00401032 mov byte ptr [eax+1],74h

7: char *a;

8: char b = "srring";

00401028 mov eax,[string "srring" (0041301c)]

0040102d mov dword ptr [ebp-0ch],eax

00401030 mov cx,word ptr [string "srring"+4 (00413020)]

00401037 mov word ptr [ebp-8],cx

0040103b mov dl,byte ptr [string "srring"+6 (00413022)]

00401041 mov byte ptr [ebp-6],dl

9: a = b;

00401044 lea eax,[ebp-0ch]

00401047 mov dword ptr [ebp-4],eax

10: *(a+1) = 't';

0040104a mov ecx,dword ptr [ebp-4]

0040104d mov byte ptr [ecx+1],74h

2樓:

第一個問題 不知道!

第二個問題,因為\"a\"是一個指標,它指向的是常數字串,是靜態的所以不能變.你可以這樣定義char a=\"srring\"; 就行了,這樣a指向的就有空間了.

3樓:匿名使用者

關鍵是*a與a的不同

你作如下修改就行了

char a = "srring";

原因是:

char *a="srring";

是分配一個指標a把指標a的值指向"srring";(「srring」是常量所以不可以修改)

char a="srring";表示分配一個7個大小的陣列,然後把常量srring賦值給陣列a所以可以修改

c語言的指標問題,C語言的指標問題

printf c p 3 分佈來看,c是要列印輸出一個字元。p指向那個字元陣列,p就是字元 a 那麼 a 3是多少呢,a 1是b 2 是c 3 是d注意是 p 3 而不是 p 3 這是由區別的。是的。p 3。是對p指向的那個值加3,p開始是指向a的,故a加3後就是d了 而p 執行3次的話,是指標p本...

C語言指標問題,求教大神C語言指標的問題搞不懂求大神指教

include include include include include static char chongpai char static int pare const void const void static int allocateintegerarr const char size ...

c語言指標的賦值問題C語言指標的賦值問題

指標在用要注意初始化,例如 int p p為指標,地址是未知的,如果直接賦值 p a 這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。可以int p a 或者int p p a 然後再...