typedef struct
{
uint8 cmd_head;
uint8 cmd_type;
uint8 ctrl_msg;
uint16 screen_id;
uint16 control_id;
uint8 param[256];//可变长度参数,最多256个字节
}CTRL_MSG,PCTRL_MSG;
相当于
struct __CTRL_MSG {
uint8 cmd_head;
uint8 cmd_type;
uint8 ctrl_msg;
uint16 screen_id;
uint16 control_id;
uint8 param[256];//可变长度参数,最多256个字节
};
typedef struct __CTRL_MSG CTRL_MSG;
typedef struct __CTRL_MSG PCTRL_MSG;
对于这个问题,在声明过程中void s(int p1,int p2)只是表明有两个指向整形数据的指针p1,p2的类型是int型与pointer_1pointer_2相同。
在使用过程中,因为声明的是指向整形数据的指针,所以要用地址,不加
这和声明;int pointer_1,pointer_2;而用pointer_1pointer_2相同
#include <stdioh>
main( )
{
int a=10,b=100,c=1000; //调试:a(0x0012ff7c) b(0x0012ff78)
c(0x0012ff74) 整型在C++中占4位
可以看出a,b,c内存单元是连续的
int p=&c; //这里p指向c的内存单元
for(int i=0;i<10;i++)
printf("%d,",p++);//内存当中abc的存储顺序为c,b,c,
printf("\n");
}
由于你将p指向了c,所以显示时将从c内存单元里的内容开始,依次向后移动4位,而a,b,c在内存中是相邻的,所以显示结果为c,b,a,由于0x0012ff80地址以后的内存单元没有用到,里面是随机数,所以以后显示的数字将不确定
没时间给你写,思想讲下,定义数组,用于保存输入的。 最重要的处理部分,可以对数组排序,这样最大的是最后一个,最小的是第一个,再和原来数组实施交换。交换会吧···定义暂存变量temp··· 指针啦,看你会不会用,不会用会麻烦易错,会用方便点。也是c的特色啦。 java就没有,但java不也很牛嘛··
分都不给啊,不过上班上的有点累了,给你写一个吧,当做是放松,代码已测试通过,欢迎指教。
#include<stdioh>
#include<stringh>
void desc_chengji(int p)
{
int q, tmp;
for(;p != 0xFFFF; p++)
{
q = p;
for(q++; q != 0xFFFF; q++)
{
if(p < q)
{ tmp = p;
p = q;
q = tmp;
}
}
}
return;
}
void my_print(int p)
{
int i;
for(i = 0; i < 10; i++)
printf("第[%d]位同学的成绩为:%d\n",i+1,p++);
}
int main(int argc, char argv[])
{
int stu[11], p;
int i = 10;
stu[10] = 0xFFFF;//添加结束标志!!
p = stu;
printf("请输入10个学生的成绩,每个成绩以回车键确认输入。\n");
while(i--)
{
scanf("%d",p);
p++;
}
printf("所输入的学生成绩如下:\n");
my_print(stu);
printf("学生成绩降序排列后如下:\n");
desc_chengji(stu);
my_print(stu);
return 0;
}
不错,但是void fun(int a,int n,int odd,int even)中形参a是指针所以可以自加即a++
它对应main 中函数调用 fun(a,n,&odd,&even);此时a是数组。这个不能自加即a++
如果给子函数中的a++相当于main()中的函数中的数组移动一个int单位。即指针从a[0]移到下一个就指向a[1]
以上就是关于C语言 结构体 指针的用法 程序解释全部的内容,包括:C语言 结构体 指针的用法 程序解释、懂C语言的给我解释下这个指针程序、C语言,关于指针 (point) 的程序。拜托了。谢谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)