Objective-C 基本講座

文字列とchar型ポインタ

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
文字列とchar型ポインタの関係を紹介します。また、constを使う意味やconstを使ったメモリ保護についても扱います。
講師:
07:43

字幕

このレッスンでは文字列と キャラ型ポインタの関係を紹介します メモリ1バイト分を記憶区画として使う型で 最も一般的なものがキャラ型です そして文字列リテラルは 文字行動をメモリ上に配置して 終端コード0を付けたもので 英数字だと一文字が1バイトに対応します そのため文字列リテラルは キャラ型の配列とも見なせ キャラ型ポインタ変数で先頭パンチを 受け取れるようになっています またキャラ型は整数型でもあるので アスタリスクを付けて その番地に入る数値を コンソールに出力できます while 文で値の終端コードが 0になるまでループして 一文字ずつ値を表示させてみましょう Xcode の画面に切り替えます ランすると ASCII コードの値が出力されます では 今度は printf の %d の部分を %c に変えてみましょう ランするとアルファベットが出力されます %c は与えられた数値を文字コードと解釈し 対応する一文字を表示しろ という指令だからです 今度は c を x に変えてみましょう ランすると英数字の二文字が出力されます これは数値を十六進法で表示したものです 48が十進法の72を意味します 十六進法については後でもう少し説明します 次に %s を指定してみます この場合コンパイラから注意されます キャラ型ポインタの値 つまり p の値を渡すべきなのに p のポイント先の値を 渡しているからです アスタリスクを外してみます 注意が無くなりました ランさせてみましょう Hello の文字が一つずつ減っていきます 解説画面に戻ります このように同じメモリー区画にある値が 解釈によっていろいろ変化することを 覚えておいてください 数値をそのまま表示するのが %d で 一文字にして表示するのが %c です ちなみにこのように文字を シングルクオテーションで囲んだものを 文字リテラルといいます 文字リテラルがソースコード中に 書かれているとコンパイラは 対応する ASCII コードの値として扱います そのため文字リテラルは 整数型変数に代入可能です %x も数値をそのまま表示しているのですが 表記法が10進ではなく16進となります 16進表記では16で桁上がりするので 10から15にかけて 一文字で表現する必要があり そのためにアルファベットの a から f を利用します 16で桁上がりするので ちょうど2進数の四桁が 16進数の一けたに対応することになり 1バイト分8ビットの2進数をきっちり 二桁で表示できます そのため十進表記では連想しにくい2進数が 16進表記では連想しやすいという点から コンピュータの世界でよく利用されます ソースコード中に16進表記で 数値リテラルを書きたい場合は 手前に 0x と付けます 最後の %s はキャラ型ポインタとして 受け取った番地から 終端コード0までを文字列として 表示するというものです 文字リテラルを直接指定した場合も 引数としてはキャラ型ポインタとして 文字の先頭番地が渡ります また第一引数の型もキャラ型ポインタです もう少し細かく言えば 両方ともポイントする先の 値の変更を禁止された キャラ型ポインタとなっています これは物理的にメモリに 書き込めなくするものではなく 主にコンパイラに知らせるためのものです こうすることでプログラマーが 間違って内容を変更する処理を書くと コンパイラがエラーを報告するようになります また関数の引数にこのような定義があることで 呼び出す側は渡した文字列が関数内で 変更されないことを確認もできます const キーワードはその後に続く値を 変更不可にすることを コンパイラに知らせるために使います 例えばフロート型変数 PAI の前に付ければ PAI は宣言時の代入のあと 変更不可能となります const を使うことで自分がうっかり 別の値を代入するミスを防いだり 読んでいる人に 「この PAI は変数ではなく定数なのだ」 と意思表示したりできます ポインタの場合は const を付ける 場所に注意してください アスタリスクの後ろだと ポイント先の内容ではなく ポイント先として記憶している番地を 変更できなくするという意味になります 内容を変更しないなら アスタリスクより前に付けます ちなみにキャラの後に書くのでも構いません 両方を許可しないなら両方に付けます ところで実を言えば文字列リテラルは OS によって書き換えを禁止された エリアに用意されているのでうっかり ポイント先の内容を書き換えようとすると アプリが強制終了となります 文法上は間違いが無いのでアプリを 作ることが出来てしまい非常に危険です 安全面を考えると const の キャラ型ポインタ変数で受け取るべきです const を付けるとコンパイルエラーに なるので こういったうっかりミスを防げます 最後に文字列リテラルについてもう一つ 文字列リテラルでキャラ型配列を 初期化することが可能です これは次のようにブレースを 使った初期化と同じです このレッスンでは文字列と キャラ型ポインタの関係を紹介しました

Objective-C 基本講座

このコースはプログラミング初心者でもObjective-CによるiOSアプリ開発の体系的な理解が得られるように構成されています。プログラムの動作の原理、Objective-C言語の役割、そこで利用されるCocoa touchオブジェクトの役割、基本的なiOSアプリの作成方法などを学習します。ぜひこのコースをアプリ開発に踏み出すさいの第一歩としてください!

6時間39分 (69 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 3,990
発売日:2015年11月18日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。