%p হলো printf ফ্যামিলির একটি ফরম্যাট স্পেসিফায়ার যা পয়েন্টার অ্যাড্রেস প্রিন্ট করতে ব্যবহৃত হয়। এটি আর্গুমেন্ট হিসেবে void* টাইপ আশা করে।
সিনট্যাক্স
printf("%p", (void*)pointer_variable);
উদাহরণ
#include <stdio.h>
int main() {
int x = 50;
int *ptr = &x;
printf("The address is: %p, the value is %d\n", (void*)ptr, *ptr);
return 0;
}
আউটপুট (নমুনা)
The address is: 000000000022FE44, the value is 50
গুরুত্বপূর্ণ নোট
- সবসময়
(void*)কাস্ট করুন।%pvoid*এক্সপেক্ট করে। ভিন্ন টাইপের পয়েন্টার (যেমনint*,char*) পাস করলে আচরণ অনডিফাইনড হতে পারে। - আউটপুট ফরম্যাট (হেক্স, লিডিং জিরো, ০x প্রিফিক্স) কম্পাইলার/প্ল্যাটফর্ম-নির্ভর।
- সি++-এ
std::cout << ptrব্যবহার করা ভালো (টাইপ সেফ)। %pশুধু প্রিন্টের জন্য — পোস্ট-প্রসেসিং/পার্সিংয়ের জন্য উপযোগী নয়।
সম্পর্কিত স্পেসিফায়ার
| স্পেসিফায়ার | ব্যবহার | উদাহরণ আউটপুট |
|---|---|---|
%p | পয়েন্টার অ্যাড্রেস | 0x7ffeefbff5ac |
%x | হেক্সাডেসিমাল (lowercase) | 7ffeefbff5ac |
%X | হেক্সাডেসিমাল (uppercase) | 7FFEEFBFF5AC |
%lx | long হেক্স | 7ffeefbff5ac |