int main01() { int i = 0; //a代表数组首元素的地址,不是整个数组的地址 //&a表示整个数组的地址 &a a代表的数据类型不一样 //&a 数组类型 int[10] //a 数组首元素的类型 int a[10] = {1,2}; //其他初始化为0 int b[] = {1,2}; int c[20] = {0}; //编译期间搞定 for (i=0; i<10; i++) { printf("%d ",a[i]); } memset(a,0, sizeof(a)); //手工的赋值 system("pause"); /**/
return 0; }
void main02() { int i = 0; //我声明了一个数组类型 typedef int(MyArr5)[5]; int a;// &a; //用数据类型定义一个变量 MyArr5 arr5; //相当于int arra[5];
for (i=0; i<5; i++) { arr5[i] = i+1; }
for (i=0; i<5; i++) { printf("%d \n", arr5[i]); } printf("%d\n", sizeof(arr5)); //解决指针步长问题 printf("%d %d\n", &arr5, &arr5 + 1);//跨过整个数组,步长为5*4 system("pause"); } |
三种定义数组指针的方法: 1)定义一个数组类型,利用它来定义它的指针 //我声明了一个数组类型 (固定大小内存块的别名) typedef int(MyArr5)[5]; //定义一个指向数组类型的指针变量 MyArr5 *pArray;// &a; MyArr5 *pArray = &a1 2)直接定义一个数组指针类型 typedef int(*MyArr5)[5]; MyArr5 pArray pArray myP = &a 3)不声明,直接定义数组指针 int (*Myarr)[5] = &a |
#include "stdio.h" #include "stdlib.h" #include "string.h"
int get(char *const p) {
} /* typedef struct _Teacher { char name[64]; int age ; }Teacher, *pTeacher; pTeacher t1; */ void main() { int a; int *p = NULL; int i = 0;
//我声明了一个数组类型 (固定大小内存块的别名) typedef int(MyArr5)[5]; //定义一个指向数组类型的指针变量 MyArr5 *pArray;// &a;
{ int j = 0; int *pI = &j; } { //int buf[10][30] //a1代表数组首元素的地址(不是整个数组的地址),请问a1 指针变量 //1变量-->2指针变量--》 3常量指针变量 (常量指针) //结论:不能被随便的改变指针变量的值(不能随便的改变指针的指向) //为什么它是一个const
//4在定义a1[5]的时候,编译器分配内存,为了能顺利的回收内存,为了有机会让编译器拿到原始内存首地址。 //编译器就把a1做成const量。 //不能深入的理解c指针各种现象,是产生bug的根源
int a1[5] = {1,3,4,55, 6}; //char *p = &a1; //a1 = 0x11;
//给数组指针赋值 需要。。。&a1 MyArr5 *pArray = &a1; //4个字节 //用数组指针去遍历数组 for (i=0; i<5; i++) { //a1[i] = i; // = i; printf("%d ", (*pArray)[i]); } }
{ //直接定义一个 数组指针类型 用这个类型定义指针变量 //我声明了一个数组类型 (固定大小内存块的别名) typedef int(MyArr5_1)[5]; //定义一个指向数组类型的指针变量 //声明一个 数组指针类型 typedef int (*PMyArr5)[5]; PMyArr5 myP = NULL;
int b[5] = {1,3,4,55, 6};
myP = &b;
for (i=0; i<5; i++) { //a1[i] = i; // = i; printf("%d ", (*myP)[i]); } }
{ int c[5] = {1,3,4,55, 6}; //定义一个指向数组的指针变量 int (*myparra)[5] = &c; for (i=0; i<5; i++) { printf("%d ", (*myparra)[i]); } } system("pause"); } |
数组指针的分析
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.