Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
aral510
Зарегистрирован: 06.06.2006 Сообщения: 29
|
Добавлено: Чт Май 24 2012 01:54 Заголовок сообщения: Вывод с помощью printf () содержимого по указателю |
|
|
Привет всем!
Как начинающий в С и в системном программировании столкнулся с такой проблемой.
Среда: Archlinux 2.6.33 на виртуальной машине VirtualBox.
Проблема: не могу вывести через printf () значение по указателю.
Пример кода:
int main()
{
pthread_t thread_ID;
[bla bla bla...]
if (pthread_create(&thread_ID, NULL, new_prog, NULL)==0)
{
printf("Thread ID = %lu\n",(unsigned long int) thread_ID);
[bla bla bla...]
}
else
printf("error....bla bla \n");
[bla bla bla...]
}
Проблема в строке с printf(). Ни какая комбинация u, l, d не помогает.
Тип pthread_t декларирован в /usr/include/bits/pthread.h
typedef unsigned long int pthread_t;
В чем может быть дело? Где я чего-то не допонял?
Как лучше всего выводит на печать содержимое того на что показываеть указатель?
ИНФО: метод который использую на данный момент следующий:
#include <sys/syscall.h>
pid_t gettid( void )
{
return syscall( __NR_gettid );
}
А затем использую функцию gettid( ) там где надо. |
|
Вернуться к началу |
|
|
VeL
Зарегистрирован: 18.01.2006 Сообщения: 521 Откуда: Харьков
|
Добавлено: Чт Май 24 2012 05:32 Заголовок сообщения: |
|
|
Если я конечно не ошибаюсь, но чтобы выводить значение по указателю, его нужно разыменовывать, т.е. поставить * перед именем указателя, а так он поидее адрес вернет, или указывать символ для адреса в printf, адрес то поидее в 16-тиричке обычно выводится. _________________ Best regards |
|
Вернуться к началу |
|
|
aral510
Зарегистрирован: 06.06.2006 Сообщения: 29
|
Добавлено: Чт Май 24 2012 14:15 Заголовок сообщения: |
|
|
VeL писал(а): | Если я конечно не ошибаюсь, но чтобы выводить значение по указателю, его нужно разыменовывать, т.е. поставить * перед именем указателя, а так он поидее адрес вернет, или указывать символ для адреса в printf, адрес то поидее в 16-тиричке обычно выводится. |
Спасибо за ответ.
Но ни одна попытка использовать* непроходит!!!
Что-то я совсем потрерялся ...
Где в этой строке
printf("Thread ID = %lu\n",(unsigned long int) thread_ID);
нужно поставить " * " ?
Перед именем указателя - * thread_id не прошло...
Спасибо заранее за помощь. |
|
Вернуться к началу |
|
|
|