#include<stdio.h>
#include<string.h>
//指针与数组
//int main() {
// int arr[10] = { 0 };
// //arr 是首元素的地址
// //&arr[0]
// int* p = arr;
// //通过指针来访问数组
// int sz = sizeof(arr) / sizeof(arr[0]);
// int i = 0;
// for ( i = 0; i < sz; i++)
// {
// printf("%p %p %p\n", &arr[i], p + i, arr + i);//三种结果完全相同
// }
//
// return 0;
//}
//指针与数组举例二
//
void test(int *p,int sz) {
int i = 0;
for ( i = 0; i < sz; i++)
{
printf("%d ", *(p + i));
}
}
void test(int arr[], int sz) {
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
int main() {
int arr[10] = { 0 };
test(arr, 10);
return 0;
}
9,二级指针
复制代码
#include<stdio.h>
#include<string.h>
//二级指针
int main() {
int a = 10;
int* pa = &a;//pa是一个指针变量,一级指针变量
int** ppa = &pa;//ppa是一个二级指针变量
//*pa = 20;
//printf("%d\n", a);
return 0;
}
10,指针数组
复制代码
#include<stdio.h>
#include<string.h>
//指针数组
//存放指针的数组就是指针数组
int main() {
int a = 10;
int b = 20;
int c = 30;
int arr[10];
int* pa = &a;
int* pb = &b;
int* pc = &c;
int* parr[10] = { &a,&b,&c };
int i = 0;
for ( i = 0; i < 3; i++)
{
printf("%d ", *(parr[i]));
}
return 0;
}
11,用指针模拟数组
复制代码
#include<stdio.h>
#include<string.h>
//用指针模拟数组
int main() {
//int arr[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
//int i = 0;
//int j = 0;
//for ( i = 0; i < 3; i++)
//{
// for ( j = 0; j < 4; j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
//}
//和上面的效果一么一样
int arr1[4] = { 1,2,3,4 };
int arr2[4] = { 2,3,4,5 };
int arr3[4] = { 3,4,5,6 };
int* parr[3] = { arr1,arr2,arr3 };
int i = 0;
for ( i = 0; i < 3; i++)
{
int j = 0;
for ( j = 0; j < 4; j++)
{
printf("%d ", parr[i][j]);
}
printf("\n");
}
return 0;
}