C语言-地址与指针

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章地址和指针
8.1变量的地址与指针
内存区的每一个字节有一个编号,这就是 “地址” 。如果在程序中定义了一个变量, 在对程序进行编译时,系统就会给这个变 量分配内存单元。
指针
一个变量的地址称为该变量的“指针”。
8.2指针变量定义
如果有一个变量专门用来存放另一变量的地址(即指
针),则它称为“指针变量”。
if(t%2!= __2__) {x=x+t*i; i=i*10;} *n =*n /10; } /**********found**********/ *n=__3__; }
1:() [] . -> 自左向右结合 2: 单目: !逻辑非 ++ -- -(负号)+ (正号) 强制类型
转换 * & ~(按位取反) sizeof 自右向左结合 3.算术(双目) * / % 自左向右结合 4.算术(双目) + - 自左向右结合 5.位运算(双目) <<左移 >>右移 自左向右结合 6.关系(双目) > >= < <= 自左向右结合 7.关系(双目) == != 自左向右结合 8.按位计算 (双目) & ^ | 自左向右结合 9.逻辑与(双目) && 自左向右结合 10.逻辑或(双目) || 自左向右结合 11.条件(三目) ?:自右向左结合 12.赋值(双目)自右向左结合 13.逗号 自左向右结合
指针变量的值(即指针变量中存放的值)是地 址(即指针)。指针就是地址。指针变量是用 来存储地址,而一般变量是用来存储数值。
指针变量的定义
定义指针变量的一般形式为 基类型 *指针变量名1,*指针变量名2 ,……;
例如
int *pointer_1; // pointer_1是指向int型变量的指针变量 char *pointer_2;//pointer_2是指向字符型变量的指针变量
指针变量的运算
1.赋初值 2.指针变量的比较(==或!=) 3. 可以进行加减运算,和大小比较
赋初值
指针变量在使用前必须要初始化,把一个具体的地址 赋给它,否则引用时会出错,如果不指向任何数据就 赋“空值”NULL。 指针变量两种初始化方法: 方法一:int a=2,*p=&a;(定义的同时初始化) 方法二:int a=2,*p;p=&a;(先定义后初始化)
注意
指针变量前面的“*”,表示该变量的类型为指针型变 量。
例: float *pointer_1; 指针变量名是pointer_1 ,而不是* pointer_1 。
8.4指针变量操作
&是取地址符号,它的一半格式是:&变量名。例 如:int i ; &i表示取i的地址。
*是取值运算符,它的一般格式:*指针变量名。例 如:int i=10,*p=&i; *p表示取i的值10
}
4 改错题
void fun(float *a,float *b,float *c) { /**********found**********/
float *k; if(*a<*b) {k=*a; *a=*b; *b=k;} /**********found**********/ if(*a>*c) {k=*c; *c=*a; *a=k;} if(*b<*c) {k=*b; *b=*c; *c=k;} }
28填空
#include <stdio.h> void fun(unsigned long *n) {unsigned long x=0, i; int t;
i=1; while(*n) /**********found**********/ {t=*n % __1__; /**********found**********/
设已有定义:float x;则以下对指针变量P 进行定义且赋初值的语句中正确的是 ()
A)float *p=1034; B)int *p=(float)x; C)float p=&x; D)float *p=&x;
若定义语句:int year=2009,*p=&year;,以下不 能使变量year中的值增至2010的语句是 ( )
A.*p+=1;
B.(*p)++;
C.++(*p);
D.*p++; *p++和(*p)++之间的差别:*p++是地址变
化,(*p)++是指针变量所指的数据变化。
函数之间地址值的传送
函数的形参为指针类型
#include <stdio.h>
void fun(char *c,int d)
{ *c=*c+1; d=d+1;
printf(“%c,%c”,*c,d);
}
main()
{ char b=’a’, a=’A’;
fun(&b,a);
printf((“%c,%c\n”,b,a);
} 程序运行后的输出结果是( )
A) b,B,b,A B)来自百度文库,B,B,A C)a,B,B,a
D)a,B,a,B
34编程题
#include <stdio.h> void fun(int a, int b, long *c) {
相关文档
最新文档