teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

文章修正

2021/04/29 13:24

投稿

tentative_user
tentative_user

スコア1

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)) // <- ここでなぜcharのサイズ分だけ渡しているのかが不明
33
+ if (compare(ptr + i*ele_size, x))
34
34
  return i;
35
35
 
36
36
  // If element not found

1

文章修正

2021/04/29 13:24

投稿

tentative_user
tentative_user

スコア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,