C语言——地址和指针

发布时间:2026/7/28 17:08:42

C语言——地址和指针 一.地址在C语言中使用取地址符获取内存中数据的地址#includestdio.h int main() { int a 0; scanf(%d, a); printf(%d, a); return 0; }二.指针1.声明指针变量基类型 *变量名int* p; int *p; int * p;2.变量名赋值#includestdio.h int main() { int a 5; int* p a; printf(%p, p); printf(%p,*p); return 0; }3.指针变量赋值int main() { int a 5; int* p a; int* q p; printf(%p, q); return 0; }4.赋空值#includestdio.h int main() { int a 5; int* p NULL; printf(%p, p); return 0; }三.动态分配存储空间1.函数malloc()函数malloc()只有一个参数该函数可以动态申请一个连续的存储空间并返回该存储空间的首地址。不对数据进行初始化。(基类型*)malloc(sizeof(数据类型)* number);#includestdio.h #includestdlib.h int main() { int* p (int*)malloc(sizeof(int) * 1); printf(%p, p); return 0; }2.函数calloc()函数calloc()有两个参数第一个参数规定申请几个单位存储空间第二个参数规定申请单位存储空间的大小。将数据初始化为0。(基类型*)calloc(number, sizeof(数据类型));#includestdio.h #includestdlib.h int main() { char* p (char*)calloc(sizeof(char), 2); printf(%p, p); return 0; }3.函数free()使用此函数回收动态申请的存储空间。free(指针变量名);#includestdio.h #includestdlib.h int main() { char* p (char*)calloc(sizeof(char), 2); printf(%p, p); free(p); p NULL; return 0; }四.二级指针和多级指针1.二级指针数据类型**变量名#includestdio.h int main() { int a 1; int* p a; int** q p; printf(%p, p); printf(%p, q); printf(%d,**q); return 0; }2.多级指针多级指针变量只能存放其上级指针变量的地址#includestdio.h int main() { int a 1; int* p a; int** q p; int*** i q; int**** j i; printf(%p, p); printf(%p, q); printf(%d,**q); printf(%d, ***i); return 0; }五.指针应用1.处理字符串abcde是常量字符串用const修饰确保不会改动int main() { const char* p abcde; for (int i 0; i 5; i) { printf(%c, *p); p; } return 0; }2.作为函数形参#includestdio.h int sum(int* x, int y) { *x *x 1; y y 1; return 0; } int main() { int a 1, b 2; int* p a; sum(p, b); printf(%d%d, a, b); return 0; }3.作为函数返回值指针函数#includestdio.h int* s(int x) { int* c x; return c; } int main() { int a 1; printf(%p, s(a)); return 0; }4.函数指针函数指针是指向函数的地址。通过函数指针变量可以访问函数的地址。基类型(*函数名)(数据类型 参数);#includestdio.h int add(int x, int y) { return x y; } int sub(int x, int y) { return x - y; } int main() { int(*fw)(int a, int b); fw add; printf(%d, (*fw)(5, 4)); fw sub; printf(%d, fw(5, 4)); return 0; }

相关新闻