プログラミング/CSS
配列の先頭要素へのポインタ
配列とポインタ
//int型の配列
int arr[] = {1,2,3,4,5};
//int型のポインタ変数に
//配列の先頭要素をアドレスに代入
int* p = &arr[0];
//pが参照しているアドレスを要求
printf("%p\n", p);
//pが参照している変数の値を表示(1);
printf("%d\n", *p);
array pointer.c
//int型の配列
int arr[] = {1,2,3,4,5};
//int型のポインタ変数に
//配列の先頭要素のアドレスを代入
int* p = &arr[0];
//pとp+1が参照しているアドレスを表示
printf("p: %p\n", p)
printf("p+1; %p\n\n", p+1);
//pとp+1が参照していう変数の値を表示
printf("*p; %d\n", *p);
printf("*(p+1); %d\n", *(p+1));
p+1は、pが指す変数のi個後ろの要素のアドレスを指す。p-iも同様に、i個前の要素のアドレスを指す。
配列はメモリに連続して配置されるため、p+1は、arr[i]のポインタになる。
配列を関数に渡す
配列を関数に渡す場合、仮引数の配列に行った操作が実引数が和に影響する。これにもポインタが噛んでいる。
func array.c
//配列への操作が元の配列に影響
void change(int arr[]){
arr[1] = 4;
}
int main(void){
int arr[] = {1,2,3,4,};
//配列の中身を変えると
change(arr);
//反映されている
printf("%d\n", arr[1]); //4と表示
return 0;
}
結論から言うと、配列の配列名は、その配列の先頭要素へのポインタと解釈される。
プログラミング的に言うと、arr == &arr[0]
関数間における配列うけわたしの正体は、配列の先頭要素へのポインタ(アドレス)の受け渡しだった。
つまり、void change(int arr[])は、void change(int* arr)と同じ、change(arr)は、change(&arr[0])と同じ。
NULL Pointerとは
NULL Pointerとは、その名の通り、ポインタの示す先がヌル(何もない)状態のことを意味する。
下のコードを参照
null pointer.c
//受け取ったポインタ変数の参照先を3倍に
void triple(int* n){
*n *= 3;
}
int main(void){
//ポインタ関数pはNULLを指す=何もない
int* p = NULL;
//pの参照先を3倍にする
//この場合pの参照先は何もない
trinple(p);
//どうなる?
printf("%d\n", *p);
return 0;
}
これでは、エラーが起きる箇所は3行目の *n *= 3;の部分による。
13行目でtrinple関数に渡しているアドレスは、NULL。つまり、*nが参照される先には変数が存在しない。存在しない変数に対する操作、*n *= 3を行っていしまっているので、エラーが生まれる。
より安全な関数にするため、エラーチェックを行う。
null pointer.c
//受け取ったポインタ変数の参照先を3倍に
void triple(int* n){
//nがNULLなら1を返す
if(n == NULL) return 1;
//3倍にする
*n *= 3;
//正常にしたら戻す
return 0;
}
int main(void){
//正常終了は0,以上終了は1
int error = triple(NULL);
if(error)
printf("NULL Pointer Error\n");
else
printf("%d\n", *p);
return 0;
}
CSS
CSS:Cascading Style Sheets.
の略。CSSは、以下のようなことができる。
・ウェブに色を加える。
・形を変えたり、HTMLに縁を与えたりする。
・レイアウトを変える。
・アニメーションを加える。
Syntax
CSSの言語(統語論)には、SelectorsとDeclarationsがある。
Selectors:HTMLを変化させるもの。
Declaration:HTMLの要素に機能を追加させるもの。
セレクターは、何をすべきかを言い、デクラレイションは、ブラウザーに何をすべきかを伝える。
このような入力する。
p{font-size:24px;}
pがセレクターで、{}(rest form)がデクライレイション。
How to add CSS to your HTML?
莫大な数のリンクの方法がある。
➡3つの方法を教える。
・Write your CSS within the HTML tags - Inline CSS
・Write it inside your HTML file enclosed within the <style></style> tag - Internal CSS.
・Write it in a separate file with a .css extension and include it in HTML using the <link> tag - External CSS.
Inline CSS
style attribulteを使って、HTML内にCSSを導入することがInline CSSである。
like this.
<p style=”font-size: 24px; color: orange;”>
This is how you write inline CSS.
</p>
➡フォントのサイズを、24PXに私、色をオレンジにする。
Internal CSS
headタグ内にstyleタグを用いて、入力する方法のことを言う。
Like this.
<head>
<style>
p{
color: orange;
font-size: 24px;
}
</style>
</head>
External CSS
CSSfileを分け、それをlinkタグを用いてリンクさせる。
➡これが External CSSと呼ばれる方法。
Like this.
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
“rel” attribute specifies the relationship that the linked file has with the source file.
➡relは、ソースファイル内のリンクされたファイルと関係をもつ際に使われるattribute。
"type” attribute specifies the internet media type and the value “text/css” conveys that it is CSS.
➡インターネットメディアタイプとバリュをCSSがどこにあるかを伝えるattribute
“href” or hypertext reference is used to provide the path of the file which we want to link.
➡リンクさせたいファイルへの道を提供するときに利用する。
The styles written inside .css file are not enclosed within any tags.
➡External CSSが複雑になると便利。
FYI;CSSのリンクを同時に作成した際、Inline CSSが一番影響力を持つ。
一緒にinternal CSSとexternal CSSを利用した際、