C语言指针、动态内存与结构体全解析
1. 指针解引用与星号的多重用途
在C语言里,指针解引用是个关键操作,借助在指针变量前加星号( *
),就能获取指针所指向的数据。示例如下:
printf ("numberPointer: %i \n", *numberPointer);
这里的星号并非用于声明,所以无需类型名。
星号还有通用乘法的用途,这和指针变量没关联,像下面代码:
int hoursInWeek = 24 * 7;
实际上,C语言里星号有三种不同用法,这很容易让人混淆,但只要理解了就不难掌握。为了便于学习,看到 int* number;
时,可把它想成 int POINTER number;
;看到 printf ("numberPointer: %i \n", *numberPointer);
,可当作 printf ("numberPointer: %i \n", ACTUAL_VALUE(numberPointer) );
。不过,这只是辅助理解,实际编程别这么写。
2. 指针与const关键字
当指针和 const
修饰符一起使用时,情况和普通常量有所不同。声明为 const
的指针不能通过它改变指向的值,否则会有编译