プログラミング/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を利用した際、


この記事が気に入ったらサポートをしてみませんか?