b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c 计算结构体大小 C语言学习入门(5)

电脑杂谈  发布时间:2017-12-25 13:05:49  来源:网络整理

间接引用

如 将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值。这就是”间接引用”

总结一句:用来存放变量地址的变量,就称为”指针变量”。在上面的情况下,变量b就是个”指针变量”,我们可以说指针变量b指向变量a。

指针的定义

一般形式:类名标识符*指针变量名;

int*p;

float*q;

“*”是一个说明符,用来说明这个变量是个指针变量,是不能省略的,但它不属于变量名的一部分

前面的类型标识符表示指针变量所指向的变量的类型,而且只能指向这种类型的变量

指针的初始化

inta =10;int *p = &a; float b = 2.3f; float *q; q = &b;

指针运算符

给指针指向的变量赋值

char a = 10;

printf(“修改前,a的值:%d\n”, a);

// 指针变量p指向变量a

char *p = &a;//这个* 是定义指针的说明符

// 通过指针变量p间接修改变量a的值

*p = 9;//这个* 是指针运算符,表示 把9赋值给 指针指向的地址a,也就相当于 a = 9;

//这里 就是间接修改a的值

printf(“修改后,a的值:%d”, a);

取出指针所指向变量的值

char a = 10;

char *p;

p = &a;

char value = *p;//根据p值(即变量a的地址)访问对应的存储空间,并取出存储的内容(即取出变量a的值),赋值给value

printf(“取出a的值:%d”, value);

使用注意

在指针变量没有指向确定地址之前,不要对它所指的内容赋值。下面的写法是错误的

int*p;

*p =10;//这是错误的

应该在指针变量指向一个确定的变量后再进行赋值。下面的写法才是正确的

//定义2个int型变量

inta =6, b;

//定义一个指向变量b的指针变量p

int*p;

p= &b;

//将a的值赋值给变量b

*p = a;

例子

交换两个字符变量的地址(改变实参的值)

voidswap(char*p,char*q)

{

chartemp = *p;

*p = *q;

*q = temp;

}

intmain(intargc,constchar* argv[])

{

chara =‘A’, b =‘&’;

swap(&a, &b);

printf(“a=%c b=%c\n”, a, b);

}

用指针指向一维数组的元素

int a[2] = {2, 3}; int *p = &a[0]; *p = 10;那么a[0]应该等于10

数组名a的地址 与 它的第一个元素的地址相同, 所以 p = &a[0] 与 p = a 效果一样

指针来遍历数组元素

intary[] = {1,2,3,4,5};

int*q = ary;

for(inti =0; i <5; i++)

{

//数组内元素内存地址是连续的存储方式,指针移动一个对应类型单位字节数(int、char…),则指向下一个元素值

// printf(“数为:%d “, *(q+i)); //地址移动

// printf(“数为:%d “, *(ary+i)); //地址移动

printf(”数为:%d “, *(q++));//q=q+1,指针指向的地址移动

// printf(“数为:%d “, *(ary++)); //错误,常量不能赋值


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55787-5.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 高井麻帆
      高井麻帆

      还有日本的东西质量就是好

    • 张恒
      张恒

      )这讲的是人话

    热点图片
    拼命载入中...