栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言中指针相关应用(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言中指针相关应用(1)

指针
  • 前言
  • 一、基础知识
    • 指针变量声明
    • 取地址运算符(&)
    • 间接寻址运算符(*)
    • 指针赋值
    • 指针作为参数
    • 指针作为返回值
  • 二、指针与数组
    • 1.指针的算术运算
    • 2.数组处理
    • 指针和多维数组
  • 总结


前言

个人学习笔记,部分内容摘自c语言程序设计现代方法第二版。


一、基础知识 指针变量声明
int *p;
double *q;
char *r;
取地址运算符(&)
int *p=&i;
//same as int *p;
//p=&i;如果在p前加上*,p的对象内容会替换为i的地址,造成不可控后果
间接寻址运算符(*)
int *p=&i;// 需要初始化指针变量后使用p的值
i=1;//此时*p的值为1
p=2;//此时i的值为2

注:只要p指向i,*p就是i的别名,*p和i的值会同时改变。

指针赋值
int i,j,*p,*q;
p=&i;
q=p;//q points to where p points to
*q=*p;

指针作为参数
void decompose(double x,long *int_part,double *frac_part)
{
    *int_part = (long)x;
    *frac_part = x - *int_part;
}
decompose(3.14159,&i,&d);
指针作为返回值
int *max(int *a,int *b){
    if(*a>*b)
        return a;
    else
        return b;
}
//调用
int *p,i,j;
p=max(&i,&j);
二、指针与数组 1.指针的算术运算
int a[10],*p,*q,i;
p=&a[0];
q=&a[1];
*p=5;//a[0]=5;
p+=6;//p=&a[6];
i=p-q;//i=5;
i=q-p;//i=-5;
//comparation
//p<=q is 0
//p>=q is 1
int *p = (int []){3,0,4,3,1};

2.数组处理

代码如下(示例):

int *p,a[N],sum=0;
//指针用于数组处理
p=&a[0];
while(p<&a[N])
    sum+=*p++;
//用数组名作为指针
for(p=a;p 
指针和多维数组 

众所周知,c语言按行主序存储二维数组。
故可使用以下代码:

int *p;
int a[nums_rows][nums_cols];
for(p=&a[0][0];p<=a[nums_rows-1][nums_cols-1];p++)
    *p=0;//初始化

以此类推处理多维数组行,列的方法
列使用(*p)[i],此处p指向长度为nums_ cols的整型数组。

总结

以上就是c语言中指针的第一部分啦,求三连,求关注呜呜呜。。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352479.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号