纯指针对二维数组进行操作
二维数组
#include <stdio.h>
int array[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
void Show_array(int (*array)[4]){
int (*p)[4]; //定义一个一维数组指针 注如果想定义一个二维数组指针,如下: int *(*P)[];
int *p1; //定义一个整形指针
//按照地址进行数组元素选择
for(p = array; p < (array+3); p++){
for(p1 = *p; p1 < *p+4; p1++){
printf("%d ",*p1);
}
}
}
int *set_array(int (*array)[4],int value){
int (*p)[4];
int *p1;
for(p = array; p < (array+3); p++){
for(p1 = *p; p1 < *p+4; p1++){
*p1 = value;
}
}
return *p;
}
int main(void){
int *p;
Show_array(array);
printf("\r\r\n");
p = set_array(array,0);
Show_array(array);
return 0;
}
字符数组 *char array[];
#include <stdio.h>
//指针数组只能用字符串往里面填。而且其数组名的类型就是一个二维指针(array)。
//虽然没有写上维数,但是实际上维数还是按照其中字符串当中最大的那个。
char *array[] = {
"zjl",
"is",
"good",
"student"
};
void add(char **array){
char **p1;
char *p2;
for(p1 = array; p1 < array+4; p1++){ //开始是用 p1 != NULL 来作为判断项,但是实际上不行,还不知道咋回事。
for(p1 = array; *p1 != NULL; p1++){ //NULL可以与一级指针进行比较,但是和二级指针就不能进行比较,所以对二级指针进行间接引用才可以与NULL进行比较判断。但是目前不知道为什么,因为都是指针啊。
for(p2 = *p1; *p2 != '\0'; p2++){
printf("%c",*p2);
}
printf("%c",' ');
}
printf("!");
}
int main(void){
add(array);
printf("\r\r\n");
printf("%ld",sizeof(array));
printf("\r\r\n");
printf("%ld",sizeof(array)/sizeof(array[0]));
return 0;
}