指针形式参数匹配问题
来源:互联网 发布:js获取el表达式的对象 编辑:程序博客网 时间:2024/06/05 03:22
数组和指针参数是如何被编译器修改的?
“数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”:
实参 所匹配的形参
数组的数组 char c[8][10]; char (*)[10]; 数组指针
指针数组 char *c[10]; char **c; 指针的指针
数组指针(行指针) char (*c)[10]; char (*c)[10]; 不改变
指针的指针 char **c; char **c; 不改变
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int arr1[3];
int arr2[3];
int arr3[3];
int * ptr;
// ptr1是一个指向 int [3] 的指针,即ptr的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长
int ptr1[3][3]={{1,2,3},{1,2,3},{1,2,3}};
// ptr2是一个指向 int * 的指针,即ptr2的类型和&ptr是一样的,注意:ptr指向的内存区域不定长
int * ptr2[3]={arr1,arr2,arr3};
// ptr3是一个指向 int [3] 的指针,即ptr3的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长
int(* ptr3)[3]=&arr1;
ptr3=ptr1; // 没错,他们的类型相同
// ptr3=ptr2;//error 无法从“int *[3]”转换为“int (*)[3]
// ptr4是一个指向 int * 的指针,即ptr4的类型和&ptr是一样的,注意:ptr指向的内存区域不定长
int ** ptr4;
//ptr4=&arr1; //error 无法从“int (*)[3]”转换为“int **
ptr4=ptr2; // 没错,他们的类型相同
//ptr4=ptr3; // error 无法从“int (*)[3]”转换为“int **
return 0;
}
- 指针形式参数匹配问题
- Java形式参数问题
- 形式参数的问题
- C/C++函数指针参数不匹配问题
- c语言指针的形式参数
- 形式参数是类名的问题
- C语言中的指针,数组,指针数组, 数组形式参数
- const->形式参数、指向常量数据的指针、指针常量
- 指针参数问题
- 指针参数问题
- 指针参数的问题
- C++指针参数问题
- String与StringBuffer的形式参数问题
- String和StringBuilder形式参数传递问题
- 形式参数与返回值问题
- loadRunner多参数匹配问题
- 通过函数参数形式申请二级指针空间, 代码改错
- 指针以及指针做参数的问题
- sql server查询所有表名、字段名、类型、长度 和 存储过程、视图 的创建语句
- iOS textField属性详解
- javascript 利用ajax读取json数据
- easyui 琐事
- NOJ1114合法日期——interesting带星期,一个神奇的公式
- 指针形式参数匹配问题
- JForum2.1.9 安装过程
- OC类和对象
- POJ1363 Rails【stack】【栈】
- StretchBlt函数和BitBlt函数的用法
- 5大常用算法总结
- Xampp使用mysql命令提示Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
- 在mac操作系统下,Intellij IDEA默认jdk版本的修改
- Android中资源文件assets和res下面raw文件的使用不同点