#include <stdio.h>
#include <string.h>
int main()
{
char *p;
char str[10],name_first[10];
int i,count;
printf("\nName before reversing the string:::::::::::::");
scanf("%s",&name_first);
// I have taken a name in name_variable and now i want to reverse it
// using pointer for ex
count = strlen(name_first);
p=str+strlen(name_first)-1;
for(i=0;i<count;i++)
{
*(p-i)=*(name_first+i);
}
// now I am getting a reverse of string as a o/p but I want to know
// how p is pointing to the str as I'm not assigning any address,
// is it done automatically by the compiler?
printf("\nname after reversing the string::::::::::::::%s\n",str);
}
回答
實際上,您正在爲以下代碼行中的p
分配地址。
p=str+strlen(name_first)-1;
str
是陣列,使得陣列名稱保持的基地址。現在加上name_first
數組的長度,並減去1
做指針算術,因此你得到的結果。
您已經創建了一個變量count = strlen(name_first)
。
所以沒必要再打電話strlen
的地址分配給p
。
對於更快的方法,只需要用
p=str+count-1;
謝謝噸人很好說明..... –
@pravinkumar:如果你滿意答案,你可以upvote並接受答案 – Omkant
聲明:
p=str+strlen(name_first)-1;
分配給p內存中的地址由乙方指向。
所以,讓我們說STR起始地址爲0x1000,具有長度爲10,你的name_first有5.然後p指向西班牙語 - 多米尼加共和國的長度。
當你循環運行,要更新在西班牙語 - 多米尼加共和國,0x1003,0x1002,0x1001和0x1000的字符,從而更新str的內容。
希望這會消除你的懷疑。
也有你的問題 –
str是str [10]的第一個元素的指針。在這個語句中:「p = str + strlen(name_first)-1;」 RHS是地址
P,該指針爲char,被分配在字符數組str中的最後一個字符的地址中的P =線。
然後,您繼續使用該指針來操作的存儲器塊字符,並將其打印出來的操縱內存的內容(因爲str是真的只是一個指向字符數組反正)。
- 1. 如何將指針指向的地址分配給另一個本地指針
- 2. 我想知道指針在調試時保存了特定地址
- 3. 指向一個地址的指針我沒想到
- 4. C++數組分配地址的指針
- 5. 自定義分配器如何知道指針指向數組?
- 6. 指針的指針點陣列意想不到的地址
- 7. 如果我不知道大小,我如何將內存分配給char指針?
- 8. 訪問2d數組與指針在c + +中,如何分配地址指針?
- 9. 如何將常量地址分配給pascal指針?
- 10. C指針分配:錯誤的地址和分段錯誤
- 11. 我想寫在他們的指針自己的地址
- 12. 如何將短信發送到我知道IP地址的PC?
- 13. 如何釋放指向保存地址的指針的指針
- 14. 如何獲得該指針指針指向的值的地址
- 15. 轉換指針的地址字符串和分配字符串ADRESS爲指針?
- 16. 如何分配堆指針
- 17. 如何知道堆結束的地址?
- 18. 如何知道指針是否是NSObject?
- 19. 我如何知道我的iPhone模擬器的IP地址?
- 20. delphi指針地址
- 21. 指針和地址
- 22. 我想知道收費的百分比
- 23. C++指針分配字符數組的地址
- 24. 可以在地址0分配一個有效的指針嗎?
- 25. C/C++分配DWORD數組的指針地址
- 26. 結構指針的地址分配會產生錯誤
- 27. 我如何知道我的外部IP地址是什麼?
- 28. 我怎麼知道指針變量分配的內存大小c
- 29. 如何從另一個指針中減去指針的地址?
- 30. 如何增加指針地址和指針的值?
'p = str + strlen(name_first)-1;'此行分配'str'的地址,由'strlen ...'等偏移量等於'sizeof(char)'到'p' – nhahtdh