关于c语言指针的讨论
新人首次发帖有点激动,望给位带佬支持{:1_887:}{:1_919:}//首先 ,声明一下::本贴内容有我自己的理解 和其他大佬的讲解我把原文链接放出来了
这道题虽然比较简单,但 我用了 高大上的指针 ,便于提高我对指针的理解。先放题目
https://attach.52pojie.cn//forum/202004/25/222518r1hentatm4t5e5mz.png?l
那么直接上代码
#include<stdio.h>
int main ()
{
void swap(int array);
//这里用一下刚学的指针
//void f(int a);
int a,i,j;
int (*p);
/**************************
必须有个(*p) 如果是int *p就是一个全是指针的数组
***************************/
p=a;//把第零行的首个元素的地址给p
printf("请给3*3的数组赋值\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf("%d",(*(p+i)+j));
}
printf("输入数组为\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%2d", *(*(p+i)+j));
}
printf("\n");
}
swap(a);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%2d", *(*(p+i)+j));
}
printf("\n");
}
return 0;
}
void swap(int array)//参数是一个数组调用的话 把数组名给给就好了
{
int temp,i,j;
int (*p);
p=array;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)//如果j=0的话那就又换回去了
{
temp= *(*(p+i)+j);
*(*(p+i)+j)= *(*(p+j)+i);
*(*(p+j)+i)= temp;
}
printf("swap over ^_^\n");
}
/*************
int *p; //定义一个指针数组(个人理解 偏意词语偏向后面的词),该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续来再定义了。
int (*p); //定义一个数组指针,该指针源指向含4个元素的一维数组(数组中每个元素是int型)。
区分int *p; 和int (*p); 就要看运算符的优先级了。
int p; 中,运算符[ ]优先级高,先与p结合成为一个数组,再由int说明这是一个整型指针数组。
int (*p); 中( )优先级高,首先说明p是一个指针,指向一个整型的一维数组。
原文博客:https://blog.csdn.net/weixin_44720916/article/details/105621896
***************************/
/******************************
指针上加减1等于他存的地址加减他存的一个单位元素所占的字节长度
*取值操作符,&取址操作符
********************************
说明:
现有一个一维数组,那么a就是首元素的地址,现在有一个
二位数组,那么 a指的是第0行的首元素的地址(a可以看成指针
但是数组字母虽然表示指针但是他是不能修改的左值即不能执行++运算等),
*********************************
(可以把二维数组看成一维数组的数组),再简单来看假如有数组int a
那么 可以看成一个一维数组b有三个元素,一个元素长(int 4字节)4*3字节
那么a+1()指的是第1行的元素第0个元素地址&a
a+2()指的是第2行的第0个元素地址 &a
a+1那指的是第行第一列的元素地址&a
a等价于*(a+1)
*************************
信息来源于博客,以及个人理解
https://blog.csdn.net/zj490044512/article/details/86353764
*******************************
那么再来说明指针数组
int(指向数组类型) *p[二维数组的列数(一行的长度)]
在深入一点就是可以分解成多少个一维数组,该一维数组的长度
*(*(p+i)+j)指的是第i行第j列的元素的值
******************************/
本人小学生水平,若有错误欢迎大家批评 可以去看看传智C,指针这一块讲的很透彻。一定要自己动手敲代码。 其实你说的这道题,根本就不需要使用指针,只需要两个循环加上赋值,就可以了,其实指针没你想得那么复杂,他就是个类型而已,主要是,你要知道为什么用指针,什么时候用它,如果这个不搞清楚,那么指针会把你搞蒙的,我原来也是怕指针,但是我明白了前面的两个问题后,现在感觉指针很亲切的 python香不香
print(' '.join(, range(2, 101))]))
页:
[1]