1,C语言中用指针变量指向数组元素在这里for(p-a;p<(a+10);p++)使用指针 p 以前没有对指针赋值 。这样不行 。这样指针所指的地址是内存的一个随机地址 。在给数组a赋值之前要有“p=a”这样才让指针指向数组的首地址 。而且最后的for(p-a;p<(a+10);p++)中的“p-a”使指针重新指向a 的首地址 。p<(a+10)是相当于 P最多可以指向a[9] 的地址 。“p++”是让p从a[0]一直上移到p指向a[9]定义数组a为整型定义指向整型的指针变量P,整型变量i依次输入十个整数下一个循环,首先P指向数组首地址,即指向数组第一个元素 , 然后P依次加一 , 移向下一地址 , 即指向数组下一个元素依次打印输出数组名并不是一个普通的变量 , 而是一个指向数组首元素的指针 。也就是说,我们可以用数组名来初始化一个对应类型的指针 。虽然数组名是指针,但它是一个指针常量 。也就是说 , 不带下标的数组名不能作为左值 。指针是一种数据类型,所以,我们可以用指针类型来创建一个数组 。声明一个指针数组的语句格式是:指针类型 * 数组名[常量表达式];对指针数组的操作和对指针变量的操作并无不同.main()暂时先写这么多,你一开始没给p赋值是不对的~
2,C语言中关于指向数组的指针char str[100];char *pi=str;//相当于char *pi ;pi=str;char **ppi=*pi;//这个地方抄错了 。应为char **ppi=&pi;定义加*表明这是指针类型的变量用的时候,就是用的指针,加*干什么 。只有取指针所指变量的值,或给指针所指的变量赋值的等涉及指针所指的变量的时候 , 才会又加*号,表示获取或改变,指针所指变量的值 。char x=10;*pi =x;//给指针所指的变量赋值,改变指针所指变量的值(改变*pi)。x=*pi;//取指针所指的值,取指针pi所指的变量的值(表示为*pi)赋值给x 。pippi是指针带*是取值的意思*pi=str意思是把str这个数组的首地址 放在pi所指的空间里 换句话说就是pi指向了str数组 。用pi+1之类的就可以指向数组里面的东西*(pi+1)等同于str[1]因为不管是str还是pi, ppi都指的是地址 , 函数调用时只需要知道参数的地址就行 , 然后再去取里边的值,而不用加上星号来传递里边的值 。首先要明白,指针数组中存储的是指针 , 也就是说两个元素都是指针,而且存放的也的确是“a”和“a”的地址,但要知道字符串和字符是两个不同的数据类型,也就是说虽然存放的地址是一样的,但指针的类型不能理解为是指向字符“a”和“a”的指针,应该是指向字符串“abcd”和“abcd”的,明白的么?因为数组的名字,本身就是指向数组头的指针 。另外char **ppi=*pi;是不对的吧 。这意思是给一个指针赋值一个常数,这样的赋值只允许右值为0的【c语言指针怎么指向数组,C语言中用指针变量指向数组元素】
3,c语言 指针怎么指向一个结构数组楼上都回答得这么复杂吗?我写简单一点的struct strint n;int s;};void main()分别赋值为1和2,对a[1]中的成员设置为3和4 。注:有些编译器可能不需要最前面的struct来声明结构对象 。struct str *p=a;//声明一个结构指针,并把结构数组的地址赋给该指针 printf("%d",p->n);//访问结构数组对象a[0]中的变量n的值,也就是1printf("%d",(p+1)>n); //访问结构数组对象a[1]中的变量n的值,也就是3 。因为指针p+1就指向了结构数结a的下一个位置,也就是a[1]处 。}类型不同struct student 是一个类型char数组 是一个类型p是指向类型struct student的指针stu[1].name是真相char[]的指针 。c++是强类型语言 , 类型必须对应你可以通过强制类型转换来实现p = (struct student *) stu[1].name,但是根据本题目情况,这样产生的结果是错误的int iLen = 5;str* pStr = new str[iLen];str* pNext = pStr;for (int i = 0; i < iLen; ++i)pNext->n = i;pNext->s = i;pNext++;}pNext = pStr;for ()输出类似}main()typedef struct srtint n;int s;}str_xx;//自定义一个结构体str_xx test_str;//按照自定义的一个结构体定义一个结构体str_xx *test_prt;//按照自定义的一个结构体定义一个指针0test_prt = test_str;//把这个指针指向这个结构体test_prt->n = 0;//给结构体变量赋值test_prt->s = 0;//给结构体变量赋值printf("test_prt->n = %d test_ptr->s = %d\n",test_prt->n,test_prt->s);}
推荐阅读
- 2023年专升本最新政策,最新的专升本政策可以跨省吗
- 海峡油新行情分析系统
- lsp-id分析
- 腾讯地图北斗导航下载,手机腾讯导航
- 冒险岛武陵道场
- 苹果14多少钱一台256g,苹果手机多少钱一部
- oracle数据库修改语句 oracle语句改成mysql工具
- mysql安装不了是什么原因 mysql5.5安装不上去怎么办
- 学mysql有什么用 mysql这门课你学到了什么