<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
typedef [C++ Reference]
</title>
<meta name="generator" content="DokuWiki Release 2009-12-25c "Lemming"" />
<meta name="robots" content="index,follow" />
<meta name="date" content="2009-05-14T11:47:42-0700" />
<meta name="keywords" content="keywords,typedef" />
<link rel="search" type="application/opensearchdescription+xml" href="/wiki/lib/exe/opensearch.php" title="C++ Reference" />
<link rel="start" href="/wiki/" />
<link rel="contents" href="/wiki/keywords/typedef?do=index" title="Index" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="/wiki/feed.php?mode=list&ns=keywords" />
<link rel="edit" title="Edit this page" href="/wiki/keywords/typedef?do=edit" />
<link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/keywords/typedef" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/keywords/typedef" />
<link rel="canonical" href="http://www.cppreference.com/wiki/keywords/typedef" />
<link rel="stylesheet" media="all" type="text/css" href="/wiki/lib/exe/css.php?s=all&t=custom1&tseed=1272971091" />
<link rel="stylesheet" media="screen" type="text/css" href="/wiki/lib/exe/css.php?t=custom1&tseed=1272971091" />
<link rel="stylesheet" media="print" type="text/css" href="/wiki/lib/exe/css.php?s=print&t=custom1&tseed=1272971091" />
<script type="text/javascript" charset="utf-8" ><!--//--><![CDATA[//><!--
var NS='keywords';var JSINFO = {"id":"keywords:typedef","namespace":"keywords"};
//--><!]]></script>
<script type="text/javascript" charset="utf-8" src="/wiki/lib/exe/js.php?tseed=1272971091" ></script>
<link rel="shortcut icon" href="/wiki/lib/tpl/custom1/images/favicon.png" />
</head>
<body>
<div class="dokuwiki">
<div class="stylehead">
<div class="breadcrumbs">
<span class="bchead">You are here: </span><a href="../start.html" title="start">C++ Reference</a> » <a href="../keywords/start.html" title="keywords:start">C++ Keywords</a> » <a href="../keywords/typedef.html" title="keywords:typedef">typedef</a> </div>
</div>
<div class="page">
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2828341-1";
urchinTracker();
</script>
<!-- wikipage start -->
<h2><a name="typedef" id="typedef">typedef</a></h2>
<div class="level2">
<p>
Syntax:
</p>
<pre class="c code c++" style="font-family:monospace;"> <span class="kw4">typedef</span> existing<span class="sy0">-</span>type new<span class="sy0">-</span>type<span class="sy0">;</span></pre>
<p>
The typedef keyword allows you to create a new alias for an existing data type.
This is often useful if you find yourself using a unwieldy data type – you can
use typedef to create a shorter, easier-to-use name for that data type. For
example:
</p>
<pre class="c code c++" style="font-family:monospace;"> <span class="kw4">typedef</span> <span class="kw4">unsigned</span> <span class="kw4">int</span><span class="sy0">*</span> pui_t<span class="sy0">;</span>
<span class="co1">// data1 and data2 have the same type</span>
pui_t data1<span class="sy0">;</span>
<span class="kw4">unsigned</span> <span class="kw4">int</span><span class="sy0">*</span> data2<span class="sy0">;</span></pre>
<p>
The syntax above is a simplification. More generally, after the word “typedef”,
the syntax looks exactly like what you would do to declare a variable of the
existing type with the variable name of the new type name. Therefore, for more
complicated types, the new type name might be in the middle of the syntax for the
existing type. For example:
</p>
<pre class="c code c++" style="font-family:monospace;"> <span class="kw4">typedef</span> <span class="kw4">char</span> <span class="br0">(</span><span class="sy0">*</span>pa<span class="br0">)</span><span class="br0">[</span>3<span class="br0">]</span><span class="sy0">;</span> <span class="co1">// "pa" is now a type for a pointer to an array of 3 chars</span>
<span class="kw4">typedef</span> <span class="kw4">int</span> <span class="br0">(</span><span class="sy0">*</span>pf<span class="br0">)</span><span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// "pf" is now a type for a pointer to a function which takes 1 float argument and returns an int</span></pre>
</div>
<!-- wikipage stop -->
</div>
<div class="clearer"> </div>
<div class="stylefoot">
<div class="meta">
<div class="user">
</div>
<!--
<div class="doc">
keywords/typedef.txt · Last modified: 05/14/2009 11:47 by fernio </div>
-->
</div>
</div></div></body>
</html>