指针后面有中括号表示什么

main(){
char st[20],*ps;
int i;
printf("input a string:\n");
ps=st;
scanf("%s",ps);
for(i=0;ps[i]!='\0';i++)
if(ps[i]=='k'){
printf("there is a 'k' in the string\n");
break;
}
if(ps[i]=='\0') printf("There is no 'k' in the string\n");
}

求解 for循环中的第二个式子 为什么是for(i=0;ps[i]!='\0';i++) ps是指针变量啊??????

ps[i] 里的中括号,C语言处理成运算符,ps[i] 等价于 *(ps+i),
C语言里,指针和数组关系密切。*ps, 一旦有指向地址后,就可以看成 一维数组ps[], 哪种形式便于阅读理解,就可以用哪种形式。 ps[i] 等价于 *(ps+i)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-01
malloc叫动态内存分配,是在程序运行时分配的内存,内存区域为动态如;数组是在编译时分配,所以定义时需要给定明确的长度,分配的内存在静态区。至于你说的指针用下标取值,其实是因为数组用下标取值其实是先转化为指针的——a[i]先转化为*(a+i)。
第2个回答  2013-07-23
ps相当于st
他们都是指针,都是指向char st[20]这个数组,ps加中括号跟st加中括号是一样的,意思都是向指向地址后移i*sizeof(char)长度后地址所指向的内容
第3个回答  2013-07-23
在编译器看来数组名与指针是同一概念,比如这里的st其实就是*st,在编译器编译时,自动会把所有的[]处理为*()(声明除外)。比如st[5]编译时就变成了*(st+5),ps[i]就是*(ps+i),这个楼主会学到的
第4个回答  2013-07-23
在C中,字符数组名(咱们这里的st),代表该数组的首地址—记住,它代表一个地址!那么将一个地址赋值给指针变量有什么问题呢?而后面使用下标访问st的元素,此时st和ps是等价的。追问

嗯 好的 也就是相当于一维数组的 *(ps+i) 那么但访问二维数组是不是 *(*(ps+i)+j) 呢?

指针后面有中括号表示什么
ps[i] 里的中括号,C语言处理成运算符,ps[i] 等价于 *(ps+i),C语言里,指针和数组关系密切。*ps, 一旦有指向地址后,就可以看成 一维数组ps[], 哪种形式便于阅读理解,就可以用哪种形式。 ps[i] 等价于 *(ps+i)。

c指针中括号
这要看*p指的是什么了,我估计这里指的是二维数组,这时候它们是一样的都是首地址。比如a[20][20];*P+i =a[0][i]的首地址,*(p+i)同样也是a[0][i]的首地址.书中有详细的讲述。

什么叫中括号?
1. 数学中的应用:在数学中,中括号通常用于表示一个数学表达式的优先级或集合的界限。例如,在算式中的括号内,会先进行括号内的计算。此外,中括号也常用于表示一个区间或集合的界限,例如[a, b],表示从a到b的所有实数。2. 计算机编程中的应用:在计算机编程中,中括号常用于访问数组或列表中的...

c语言中括号都有什么作用
声明变量的时候有中括号,说明表示的是数组;表示下标运算,可以用来确定在数组中的位置;函数参数类型中有中括号,表示指针,有时候用指针来表达数据时,可以不用中括号,只是阅读起来不如使用中括号来得方便和直观。

...一下对于二维数组,数组名跟着一个中括号,表示的是什么?
这里用到的是数组指针 二维数组为x[N][M]每行M个元素 定义指向这个数组的数组指针就需要 char (*ss)[M];调用后 x和ss等效 循环按行循环 所以第二个空是N 数组名跟着一个中括号 对于二维数组来说, 是对应行的首地址。 比如 x[1]就是第二行的首地址 ...

c语言中指针数组有两个中括号是什么意思,p[i][i]是啥意思
例如,a[3][4] 表示a数组第3行第4列的元素。二维数组在概念上是二维的,但在内存中地址是连续的,也就是说各个元素是相互挨着的。那么,如何在线性内存中存放二维数组呢?有两种方式:一种是按行排列, 即放完一行之后再放入第二行。另一种是按列排列, 即放完一列之后再放入第二列。

C语言中,数组名后什么时候加括号,什么时候不加
假如你定义了 int A[5]={1,2,3,4,5};数组名A是指针,指向数组的第一个数1,,即*A等于1 A后面的中括号是基址+变址的寻址方式,如A[0]是*(A+0)等于一个数1,那A[3]就是*(A+3)等于第四个数4

c语言中中括号的作用
中括号用于数组的下标,有时候用指针来表达数据时,可以不用中括号,只是阅读起来不如使用中括号来得方便和直观

在C语言数组指针中(++*(pa+1)[1])表示第一行的首地址加一吗?
pa为指针,这里小括号优先,先将pa指向的地址+1(后面的pa表示最初地址+1)。原式子变为++*pa[1],这里中括号优先,所以原式子相当于++*(pa[1])。进一步原式相当于++(*(pa[1]))。显然这里pa如果是一级指针,那么pa[1]就是一个值,*pa对值取值就错了。所以假设pa指向一个二维数组int a[3...

类指针后加括号什么意思
将对象指针初始化为0,其实质是在内存中申请一片空间,将0放入,然后将0的内存地址赋给指针。谢谢采纳!

相似回答