Podcast
Questions and Answers
Int i=1,j=2,k=3; // int 2 i
2000 j
2002 k
______
Int i=1,j=2,k=3; // int 2 i
2000 j
2002 k
______
2004
int b=3; int *a=&b;
, *a
______
int b=3; int *a=&b;
, *a
______
3
: &
______
: &
______
p
______ *pp
p
______ *pp
int a, *p; p=&a;
, *p
______
int a, *p; p=&a;
, *p
______
void swap(int *p1, int *p2)
, ______
void swap(int *p1, int *p2)
, ______
return
______
return
______
P p+i
a+i
a[i] ______ai
P p+i
a+i
a[i] ______ai
*(&a[0]) &a[0]
______
*(&a[0]) &a[0]
______
,
,
Char"______"
Char"______"
p1
p2
a
b
a b *p2=*p1
'______''*string'
p1
p2
a
b
a b *p2=*p1
'______''*string'
Sub,global______
Sub,global______
Malloc,, #include <______>
Malloc,, #include <______>
Malloc______
Malloc______
point
void int(int &)______
point
void int(int &)______
Int argc, char *argv______ main argv______
Int argc, char *argv______ main argv______
Flashcards
地址的含义
地址的含义
在程序中定义了一个变量时,系统会分配内存单元。每个字节拥有编号,这个编号就是地址。
引用变量的值
引用变量的值
在程序中通过变量名来引用变量的值。
定义指针变量
定义指针变量
类型名 *指针变量名;
指针赋值
指针赋值
Signup and view all the flashcards
指针变量赋值
指针变量赋值
Signup and view all the flashcards
指针访问数组元素
指针访问数组元素
Signup and view all the flashcards
按地址传递的优点
按地址传递的优点
Signup and view all the flashcards
指向函数的指针。
指向函数的指针。
Signup and view all the flashcards
动态内存分配函数 malloc
动态内存分配函数 malloc
Signup and view all the flashcards
动态内存分配函数 calloc
动态内存分配函数 calloc
Signup and view all the flashcards
释放内存空间的函数 free
释放内存空间的函数 free
Signup and view all the flashcards
命令行参数argc,*argv[]
命令行参数argc,*argv[]
Signup and view all the flashcards
字符指针变量
字符指针变量
Signup and view all the flashcards
Study Notes
指针的概念
- 如果在程序中定义了一个变量,系统会分配内存单元
- 编译系统根据变量的类型分配一定长度的空间
- 内存区的每一个字节有一个编号,这个编号就是“地址”
- 地址指向对应的
变量单元
的引用称为 “指针”
地址和指针
- 变量
i,j,k
分别被分配地址 2000, 2002, 2004 - 对应内容 (值) 分别为 1, 2, 3
Int
类型的变量通常占 2 个字节
变量名的引用
- 通常通过变量名来引用变量的值
- 直接访问: 直接使用变量名访问
- 间接访问: 将变量的地址存放在另一变量(指针变量)中,通过该指针变量找到对应变量的地址,从而访问变量
指针变量的定义
- 定义格式: 类型名 * 指针变量名;
int *a, int b;
定义了int
指针变量a,int
变量b;int *a = &b;
是将int指针类型的变量a
指向b
的地址- 指针变量的类型需要和指针变量指向的类型保持一致
a = &b;
将变量b的地址赋值给a
,指针变量赋值必须是一个地址
指针变量的使用示例
- 首先定义int变量
a
为100,b
为10 - 然后定义指向int的指针变量
pointer_1
和pointer_2
- 使用
&
取地址赋值给指针pointer_1 = &a;
//pointer_1
指向a
的地址pointer_2 = &b;
//pointer_2
指向b
的地址
- 可以通过指针访问对应的值
*pointer_1
和*pointer_2
指针变量的引用
- 给指针变量赋值
- 引用(访问)指针变量指向的变量
- 引用指针变量的值
指针变量示例
- 声明
int
变量 a 和指针 *p p = &a;
就是将a
的地址赋值给指针变量p- 使用
*p
来访问p
所指向的值,即访问变量a
- 可以通过
*p = 1
修改指针指向的变量的值,这等价于 a = 1
注意
&
是取地址运算符,&a
就是变量a
的地址*
是指针运算符(或称“间接访问”运算符),*p
代表指针变量p
指向的对象的值
指针变量的使用要点
- 解题思路: 不直接交换变量的值,而是交换两个指针变量的值 (地址)
- 可以通过交换了的指针, 访问到对应的变量
指针变量的类型
- 指针变量可以是
int *
类型 - 需要使用指针变量指向的地址
p1 = &a
- 如果需要调换指向需要注意
p = p1
与p2
的值互换printf("a=%d,b=%d\n",a,b);
仍然打印原变量ab的值printf("max=%d,min=%d\n",*p1,*p2);
打印交换后的指针对应的数据
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.