質問編集履歴
2
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
感じた箇所があるのでお伺いします。
|
5
5
|
|
6
6
|
配列中に指定した数字がどこに入っているか調べる関数でポインタ渡しを使っているのですが、
|
7
|
-
整数を扱っているにもかかわらず、実引数で渡すアドレスがなぜかchar
|
7
|
+
整数を扱っているにもかかわらず、実引数で渡すアドレスがなぜかcharとして取り扱われています。
|
8
8
|
|
9
9
|
この理由がなぜか教えていただけますでしょうか。
|
10
10
|
|
11
11
|
コードに書いてあるコメントでは
|
12
12
|
> Since char takes one byte, we can use char pointer for any type
|
13
13
|
|
14
|
-
と書いてあるのですが、1byte
|
14
|
+
と書いてあるのですが、charが1byteだと整数を扱っていい意味が分かりません。。。
|
15
15
|
|
16
16
|
### 該当のソースコード
|
17
17
|
|
@@ -26,11 +26,11 @@
|
|
26
26
|
int search(void *arr, int arr_size, int ele_size, void *x,
|
27
27
|
bool compare (const void * , const void *)){
|
28
28
|
|
29
|
-
char *ptr = (char *)arr;
|
29
|
+
char *ptr = (char *)arr; // <- ここでなぜcharとして扱われているかが不明
|
30
30
|
|
31
31
|
int i;
|
32
32
|
for (i=0; i<arr_size; i++)
|
33
|
-
if (compare(ptr + i*ele_size, x))
|
33
|
+
if (compare(ptr + i*ele_size, x))
|
34
34
|
return i;
|
35
35
|
|
36
36
|
// If element not found
|
1
文章修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
C言語のポインタを学習しているものです。[こちら](https://www.geeksforgeeks.org/function-pointer-in-c/)のサイトのコードで疑問に
|
4
4
|
感じた箇所があるのでお伺いします。
|
5
5
|
|
6
|
-
配列中に指定した数字が入っているか調べる関数でポインタ渡しを使っているのですが、
|
6
|
+
配列中に指定した数字がどこに入っているか調べる関数でポインタ渡しを使っているのですが、
|
7
|
-
実引数で渡すアドレスがなぜかcharのサイズを足した状態で指定されています。
|
7
|
+
整数を扱っているにもかかわらず、実引数で渡すアドレスがなぜかcharのサイズを足した状態で指定されています。
|
8
8
|
|
9
9
|
この理由がなぜか教えていただけますでしょうか。
|
10
10
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
}
|
39
39
|
|
40
40
|
int main(){
|
41
|
-
int arr[] = {2, 5, 7, 90, 70};
|
41
|
+
int arr[] = {2, 5, 7, 90, 70}; // <- 取り扱う対象は整数
|
42
42
|
int n = sizeof(arr)/sizeof(arr[0]);
|
43
43
|
int x = 7;
|
44
44
|
printf ("Returned index is %d ", search(arr, n,
|