\documentclass{beamer} %include lhs2TeX.fmt \author{Piyush P Kurur\\ Office no: 224\\ Dept. of Comp. Sci. and Engg.\\ IIT Kanpur} \newcommand{\Token}[2][]{\node(#2#1)[token]{#2};} \newcommand{\Symbol}[2][]{\node(#2#1)[symbol]{#2};} \newcommand{\Point}[1]{\node(#1)[point]{#1};} \usepackage{tikz} \usetikzlibrary{positioning,shapes,chains,fit} \usetikzlibrary{shapes.symbols} \usetikzlibrary{matrix} \usetikzlibrary{backgrounds} \usetikzlibrary{shapes.geometric} \usepackage{multicol} \usepackage{algorithm2e} \usepackage{pgfkeys} \pgfkeys % {% /tikz/box/.style={ shape=rectangle,% minimum size=1em,% top color=white, bottom color=red!50!black!50, inner sep=0pt, draw=black }, /tikz/bbox/.style={ shape=rectangle, minimum size=1em, fill=yellow, draw=black }, /tikz/bbbox/.style={ shape=rectangle, minimum size=2em, fill=blue!50, draw=black, thick }, /tikz/garbage/.style={% starburst,% fill=yellow,% draw=red } } \newcommand{\arraythree}[4]{ \begin{tikzpicture}[node distance=0] \pgfsetstrokeopacity{#4}; \node[#1](a0#3){#2}; \node[#1, right=of a0#3](a1#3){#2}; \node[#1, right=of a1#3](a1#3){#2}; \end{tikzpicture} } \newcommand{\arraytwo}[4]{ \begin{tikzpicture}[node distance=0] \pgfsetstrokeopacity{#4}; \node[#1](a0#3){#2}; \node[#1,right=of a0#3]{#2}; \end{tikzpicture} } \newcommand{\Array}[0]{ \arraythree{box}{}{a}{1} } \newcommand{\AArray}[0]{% \arraythree{bbox}{\Array}{b}{0.5}} \newcommand{\AAArray}[0]{% \arraytwo{bbbox}{\AArray}{c}{0.25}} \title{Fundamentals of Computing: Lecture 18} \date{September 9, 2009} \begin{document} \begin{frame} \maketitle \end{frame} \begin{frame} \frametitle{Summary on arrays and pointers} \begin{itemize} \item Arrays are passed as pointers to the first element. \item A two dimensional array is passed as a pointer to an 1 dimensional array e.g |int (*a)[10]|. \item In general an $n$ dimensional array is passed as a pointer to an $n-1$ dimensional array. \end{itemize} \end{frame} \begin{frame} \begin{tikzpicture} \matrix { \node[box,label=above:$\texttt{int a;}$]{}; \pgfmatrixnextcell \node[label=above:$\texttt{int a[3];}$ ]{\Array}; \pgfmatrixendrow \node[label=above:$\texttt{int a[3];}$ ]{\Array}; \pgfmatrixnextcell \node[label=above:$\texttt{int a[3][3];}$]{\AArray}; \pgfmatrixendrow }; \end{tikzpicture} \begin{tikzpicture} \node[label=above:$\texttt{int a[2][3][3];}$]{\AAArray}; \end{tikzpicture} \end{frame} \begin{frame} \begin{code} #include int main() { int a[2][3] = {11,12,13, 21,22,23}; int *ptr,*qtr; ptr = (int *) (a+1); qtr = a[1]; printf("**a = %d\n",**a); printf("*(a+1) = %d\n", *(a+1)); printf("*(a+1) with cast %d\n", * ((int *) (a+1))); printf("*ptr = %d \n", *ptr); printf("*qtr = %d\n", *qtr); } \end{code} \end{frame} \end{document}