怎样定义一个指针,指向一个数组?
1、用数组类型加 * 定义数组指针
代码1:
#include <stdio.h>
int main()
{
int i=0;
typedef int (MYARR5)[5];//抽象出数组类型
MYARR5 array; // 用数组类型定义变量
MYARR5 *parray;// 用数组类型定义指针变量
parray=&array;
for(i=0;i<5;i++)
{
(*parray)[i]=i+1; // 必须特别注意parray加星号*后,要加括号,防止与后面的中括号结合。不然会造成内存非法访问!
}
for(i=0;i<5;i++)
{
printf("array[%d]: %d \n ", i, (*parray)[i]);
}
return 0;
}
2、可以声明数组指针类型,用数组指针类型直接定义数组指针变量
代码:
#include <stdio.h>
int main()
{
int i=0;
//typedef int (MYARR5)[5];//抽象出数组类型
typedef int (*PMYARR)[5];
PMYARR parray; //编译器分配一个指针变量;
int array[5];
parray=&array;
for(i=0;i<5;i++)
{
(*parray)[i]=i+1; // 必须特别注意parray加星号*后,要加括号,防止与后面的中括号结合。不然会造成内存非法访问!
}
for(i=0;i<5;i++)
{
printf("array[%d]: %d \n ", i, (*parray)[i]);
}
return 0;
}
3、直接定义数组指针变量的方法:
前两种方法都是通过类型定义变量,比较麻烦。可以直接定义:int (*parray)[5];
#include <stdio.h>
int main()
{
int i=0;
//typedef int (MYARR5)[5];//抽象出数组类型
//typedef int (*PMYARR)[5];
//PMYARR parray; //编译器分配一个指针变量;
int (*parray)[5];//直接定义一个指向数组的数组指针变量。
int array[5];
parray=&array;
for(i=0;i<5;i++)
{
(*parray)[i]=i+1; // 必须特别注意parray加星号*后,要加括号,防止与后面的中括号结合。不然会造成内存非法访问!
}
for(i=0;i<5;i++)
{
printf("array[%d]: %d \n", i, (*parray)[i]);
}
return 0;
}
c语言中的比较难的语法:
数组类型,数组指针类型,数组指针变量
函数数据类型,使用函数数据类型定义函数类型变量,函数数据类型的指针