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 然後再...