1樓:肖婷
不行,首先你要有一個陣列存放字母,然後這個二維陣列,行中表示下一個元素應該是a[i]+j,你這樣寫的話就是跳到了下一行了,二不是下一個字母了,
2樓:醒目鳥
你需要知道指標只能指向已存在的物件。
如果物件本身並不存在,那麼是無法指向的。
3樓:
你舉的例子裡,沒有說明'b'在哪個位置,從何指出b的地址呢。你要是想用p指向a的地址,b用(p+1)指出的話,程式應該這樣寫:
#include
int main()
; /* 此處定義的陣列a中,存在'b',之後就可以用(p+1)來指向'b'的地址,因此 *(p+1)=b */
p = a;
printf("%c", *(p+1));
return 0;}
4樓:樹上鳥
簡單說 p是指向地址的,
p=&tempa; 這句是說tempa在記憶體條裡有一個地址,p是指標變數,裡面放的是tempa的地址位置,*p=a
&(p+1)中 p已經指向tempa的地址了,所以&(p+1)是p中地址的下一個相連的地址,但&(p+1)裡面卻不知道有什麼,因為他只是個地址,而且不一定在a這個二維陣列裡,因為他是tempa的地址,是和a二維陣列的地址是不一樣的,最後想說的是,b的ascii碼是a+1,但是與指標無關,你的程式是錯的。
5樓:匿名使用者
lz沒有搞清楚指標的意思。
p代表指標的話,p+1代表記憶體中p所代表地址的下一個地址。
a[i][j]=*(p+1),取得是p+1地址上的內容,具體取多少位,取決於a[i][j]型別,如果a[i][j]是char型別的話,就去一位,如果是int的話,就去四位(看機器),如果float的話,也是四位(看機器)。然後把取得的地址上的內容依照等號座標的變數型別定義的格式轉化成相應的值。
所以利用指標很強大的,如果可以的話,可以取得記憶體中地址上儲存的內容,不管是不是在自己定義的範圍內。
貌似lz的意思是:
如果*p='a';
那麼要用temp表示'b'的話。
直接:temp=*p+1就行了。而不是*(p+1)
問c語言的void使用的問題,問一個c語言的void使用的問題?
c語言不允許其引數型別是 void,void代表沒有引數。int foo void a 這樣的函式是錯誤的,形參不能是void型別。另外你的程式還有其他錯誤 include void g int a1,char b a1後面的逗號換成英文的,半形的 char g1 char p1 void main...
經典的c語言指標問題題目,一個經典的c語言指標問題題目
for p m 1 p 其中的p m 1並不改變p的值,所以p仍然指向a 0 因此,多加了a 0 和a 1 其中的p m 1並不改變p的值,所以p仍然指向a 0 因此,多加了a 0 和a 1 如果按我說的是 p a m 1 那麼p a 3 1 a 2,也就是說p從a 2 開始加,a 2 是3,從3開...
求助c語言問題,求助一個c語言問題?
你在看看,還是不對,全1表示的是 1,1000.才表示 128 反碼概念,符號位不變,其他位取反 1 全1反過來就全0,表示0的話就2個0了,所以負數在加個1 只有反碼才這樣 二進位制11111111代表 127,是按原碼規則來算。若按補碼規則,二進位制11111111算出來是 1。文中說的是100...