C 언어의 포인터 또는 포인터 변수
aray 및 pointer
aray와 지침은 우선 완전히 다른 것이다.
지침 변수에 [1],[2]를 더하면 배열 유형에 [1],[2]를 더하면 방문 요소 번호는 공교롭게도 같은
[]
를 사용했을 뿐 뜻이 다르다.포인터 변수인 경우 주소에 더하기를 사용합니다.
Stackoverflow의aray 크기를 계산하는 방법
size_t n = sizeof(a) / sizeof(a[0]);
의a[0]
는'수조 변수 a를 지정하는 첫 번째 요소'의 문법이다네.여기, a는 배열의 시작 부분의 바늘 변수로 거기에서 이런 인상을 얻는다.
size_t n = sizeof(a) / sizeof(*a);
비고#include <stdio.h>
int main() {
int arr[3] = {10,20,30};
int* t = arr;
printf("%p\n", t);
printf("arr: %lu\n", arr);
printf("t: %lu\n", t);
printf("the size of arr : %lu\n", sizeof(arr)); // int型のarrayなので要素数 * int型のサイズ = 12
printf("the size of *arr : %lu\n", sizeof(*arr)); // arrの先頭の要素の
printf("the size of t : %lu\n", sizeof(t)); // ポイント変数なので8
// ポインタ変数でやった場合
printf("t[0]: %d\n", t[0]);
printf("t[1]: %d\n", t[1]);
printf("t[2]: %d\n", t[2]);
// printf("%d\n", t[3]);
// arrのindexでアクセスした場合
printf("arr[0]: %d\n", arr[0]);
printf("arr[1]: %d\n", arr[1]);
printf("arr[2]: %d\n", arr[2]);
// printf("%d\n", arr[3]);
// arrは配列先頭のポインタなので、*arrだと、arrの先頭要素の値にアクセス可能
// arr+1は、配列の先頭から次のポインタにアクセス。
printf("*arr: %d\n", *arr);
printf("*(arr+1): %d\n", *(arr+1));
printf("*(arr+2): %d\n", *(arr+2));
return 0;
}
sizeof
조작자가main 함수를 제외한 function에서main 함수를 기대하지 않는 행위-> https://www.jpcert.or.jp/sc-rules/c-arr01-c.html
함수clear () 는 그룹 요소를 0으로 초기화합니다.이 함수는 intarray[]로 표시된 인자를 추출하여 12개의 int로 구성된 정적 진열을 전달합니다.함수clear는sizeof라고 불리는 문법을 사용하여 진열의 원소의 수를 확정합니다.그러나 aray는 매개 변수이기 때문에 바늘형이다.따라서sizeof는sizeof와 같다.예를 들어sizeof=4와sizeof=4의 구조(IA-32 등)의 경우 전달된 진열의 크기와 상관없이 식sizeof/sizeof의 값은 1이고 진열의 나머지 요소는 초기화되지 않았다.
32비트 및 64비트
경품 C++
#include <stdio.h>
int main() {
int a[10];
int* p = a;
printf("%lu\n", sizeof(a)); // a全体のsizeなので40
printf("%lu\n", sizeof(a[0])); // arrayの先頭の要素、つまりintのsizeなので4
printf("%lu\n", sizeof(a) / sizeof(a[0])); // 要素数が計算できる
printf("=========\n");
printf("%lu\n", sizeof(p)); // pというポインタ変数のsizeなので 8
printf("%lu\n", sizeof(int*)); // int型のポインタ変数のsizeなので 8
printf("%d\n", sizeof(p) == sizeof(int*)); // same sizeなのでtrue = 1
printf("%d\n", sizeof(*p) == sizeof(int)); // *pは、int型のpというポインタ変数の値なので4, sizeof(int)もint型のsizeなので4。よって1
return 0;
}
참고 자료
Reference
이 문제에 관하여(C 언어의 포인터 또는 포인터 변수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/peg/articles/08cad961ee6e7a910571텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)