游戏开发 c++基础学习 笔记摘要第14天

因为最近在学指针,涉及的知识比较广,所以笔记比较杂乱,更新也可能慢很多
数组形参
为函数传递一个数组时,实际上传递的是指向数组首元素的指针
尽管不能以值传递的方式传递数组,但可以把形参写成类似数组的形式

void print(const int *);
void print(const int []);
void print(const int [10]);//三个函数等价
//如果传给print函数的是一个数组,则实参自动转换成数组首元素指针,数组大小对函数的调用没有影响

关于指针的几个题目

char *format="%s,a=%d,b=%d/n";
int a=1,b=10;
at=b;//a=11
printf(format,"a+=b",a,b);
printf("%,a=%d,b=%d/n","a+=b",a,b);
//输出  a+=b,a=11,b=10
char *p="%d,a=%d,b=%d/n";
int a=111,b=10,c;
c=a%b;p+=3;//c=1
printf(p,c,a,b);
//p+=3-->p="a=%d,b=%d/n"
//printf("a=%d,b=%d/n",c,a,b)
//输出c和a的值 1,111
int *(*p[2])[3][4];//大小为2的数组
int *(*p)[3][4];//元素类型为指针,指向一个3行4列元素类型为int * 的数组指针
int a=2;
int *pa=&a;
int *ppa=&pa;
//**ppa->a的值
//ppa->pa的地址
//*ppa->a的地址
//pa->a的地址
int **(*px[2])[3][4];
cout<<sizeof(px)<<endl;// 8 px为数组,大小为2,类型为int *
cout<<sizeof(*px)<<endl;// 4 *px为指向第一行二维数组的指针
cout<<sizeof(**px)<<endl;// **px为第一个二维数组中所有元素
cout<<sizeof(***px)<<endl;// 16 ***px为第一个二维数组中第一行中所有元素
char *a[]={"heng","yang","shi","fan"};
char **s=a;
printf("%s\n",*s);//*s=a="heng"
printf("%c\n",**s);// h
printf("%s\n",*a);// heng
printf("%c\n",**(a+1));//y
printf("%c\n",*(*a+1));//e
//数组a的首地址可以赋值给s,数组a的首地址的内容是字符串heng的地址
*(ptr++)=10;
//在这里要与 *(ptr++)=*(ptr++)+10区分开,,上面的ptr只自增了一次,而注释里的式子自增了2次
printf("%d %d",*ptr,*(++ptr));
//输出规则是从右到左,所以*ptr是执行*(++ptr)之后输出的
char *t="sound";
*t='l';//报错
printf("%s\n",t);
//字符串为常量,所以t指向的是常量的地址,不能修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值