关于C语言指针问题
发布时间:2025-05-11 19:31:47 发布人:远客网络
一、关于C语言指针问题
1、指针类型定义的时候,用的是int*pt;你可以直接理解成pt是用来存放一个地址的变量,而它代表的这个地址上存了一个int型数据。*pt就是去pt这个地址上取里面存放的内容,所以*pt是int类型,pt也就按照定义的格式说成是int*类型。“用*对它解引用”这句话的意思就是去指针代表的这个地址上取里面存放的内容。而pt[0],跟*pt是完全相同的意思,就是去取pt代表的地址上存放的int型数据。
2、你问的内容里p跟上面我说的pt是一种类型,即int*类型。
3、而a由于是二维数组,它相当于指向指针的指针,即你去a所指向的地址上取到的数据并不是int型,而是又一个地址类型,即*a是int*型,即a[0]是int*型。(a也就相当于int**类型)
二、%*c%c在c语言中是什么意思
%*c:读入一个字符,但忽略它(即不赋值给任何变量)。
1、%f,%F,%e,%E,%g,%G用来输入实数,可以用小数形式或指数形式输入。
4、%s读入一个字符串,遇空格、制表符或换行符结束。
1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCI数值存放在文本文件中。
2、 define PI3.1415926这个写法是错误的,一定不能出现分号。
3、每个C语言程序中main函数是有且只有一个。
5、算法可以没有输入,但是一定要有输出。
6、 break可用于循环结构和 switch语句。
7、逗号运算符的级别最低,赋值的级别倒数第二。
三、C语言高手帮忙啊!
printf("%f,%f\n",a.x,a.y);
struct point add(struct point a,struct point b)
struct point sub(struct point a,struct point b)
float triangle(struct point A, struct point B, struct point C)
area=sqrt(p*(p-a)*(p-b)*(p-c));
printf("Please input a point:");
printf("The Point you input is:");
printf("Please input 3 points of triangle:");
printf("The area of triangle is:%f\n",triangle(a,b,c));
printf("平移后三角形面积为:%f",triangle(a,b,c));
void trans(double matrix[DIM][DIM], double x, double y, double z)//矩阵平移
void t(double matrix[][DIM],double matrix1[][DIM])//矩阵的转置
void rotate(double matrix[][DIM],int angle)//矩阵绕 z坐标轴旋转
matrix[0][0]=cos(2*PI/n*angle);
matrix[0][1]=-sin(2*PI/n*angle);
void new_or(double matrix[][DIM],int px1,int py1,int pz1,int px2,int py2,int pz2)//根据旋转向量,建立坐标系
matrix[1][0]=matrix[2][1]*matrix[0][2]-matrix[2][2]*matrix[0][1];
matrix[1][1]=matrix[2][2]*matrix[0][0]-matrix[0][2]*matrix[2][0];
matrix[1][2]=matrix[2][0]*matrix[0][1]-matrix[0][0]*matrix[2][1];
void phalanx_mul(double matrix[][DIM],double matrix1[][DIM],double matrix2[][DIM])//方阵乘法4*4* 4*4
mul[i][j]+=matrix1[i][k]*matrix2[k][j];
void matrix_mul(double matrix[DIM][N],double matrix1[DIM][DIM],double matrix2[DIM][N])//矩阵乘法4*4* 4*1
matrix[i][j]+=matrix1[i][k]*matrix2[k][j];
double trans1[DIM][DIM]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}},
trans2[DIM][DIM]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}},
matrix[DIM][DIM]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}},
rotate1[DIM][DIM]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}},
matrix1[DIM][N]={0},point[DIM][N]={0},
t1[DIM][DIM]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}},
result[DIM][DIM]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};
printf("请输入%d个点代表三角形的三个顶点:\n",NUM);//构建三角形的三个顶点
printf("输入旋转轴向量的起始坐标和终止坐标:\n");//构建旋转轴坐标
printf("endp.x:\t\t");
printf("endp.y:\t\t");
printf("endp.z:\t\t");
printf("\n输入旋转的角度:\n");//旋转角度
if(startp.x!=0&& startp.y!=0&& startp.z!=0)//假如向量起始坐标非零
trans(trans1,-startp.x,-startp.y,-startp.z);
trans(trans2, startp.x, startp.y, startp.z);
printf("\n平移矩阵的逆\n");
printf("%f\t",trans1[i][j]);
printf("\n平移矩阵\n");
printf("%f\t",trans2[i][j]);
new_or(matrix,startp.x,startp.y,startp.z,endp.x,endp.y,endp.z);
printf("\n构建新坐标系A\n");
printf("%f\t",matrix[i][j]);
printf("\n求新坐标系A的转置(逆)\n");
printf("\n旋转矩阵\n");
printf("%f\t",rotate1[i][j]);
phalanx_mul(result,trans2,t1);
printf("\n平移的逆* A的转置\n");
printf("%f\t",result[i][j]);
phalanx_mul(result,result,rotate1);
printf("\n平移的逆* A的转置*旋转矩阵R\n");
printf("%f\t",result[i][j]);
phalanx_mul(result,result,matrix);
printf("\n平移的逆* A的转置*旋转矩阵R* A\n");
printf("%f\t",result[i][j]);
phalanx_mul(result,result,trans1);
printf("\n平移的逆* A的转置*旋转矩阵R* A*平移\n");
printf("%f\t",result[i][j]);
printf("\n旋转后点%d的坐标为:\n",k);
matrix_mul(point,result,matrix1);
printf("%f\t",point[i][j]);