请告诉我
请逐步说明以下几点: 1.
同时请给我一些链接,让我可以找到类似的问题进行练习。
char*arr[4]
,char *(*ptr)[4]=&arr
和(*ptr)[i]
在这里逐步表示什么意思。请逐步说明以下几点: 1.
char* arr[4]
表示一个指向字符型数据的指针数组,该数组有4个元素。
2. char *(*ptr)[4]=&arr
表示一个指向指针数组(即上面提到的arr)的指针。
3. (*ptr)[i]
表示指针指向的数组中第 i 个元素的值。#include<stdio.h>
int main()
{
int i;
char *arr[4]={"c","c++","java","vba"};
char *(*ptr)[4]=&arr;
for(i=0;i<4;i++)
printf("address of string %d : %u\n",i+1,(*ptr)[i]);
return 0;
}
output:
address of string 1 : 178
address of string 2 : 180
address of string 3 : 184
address of string 4 : 189
如果我改变printf语句:
printf("string %d : %s\n",i+1,(*ptr)[i]);
output:
string 1 = c
string 2 = c++
string 3 = java
string 4 = vba
同时请给我一些链接,让我可以找到类似的问题进行练习。
printf("string %d : %s\n",i+1,*(ptr)[i]);
。更有可能它是由printf("string %d : %s\n",i,(*ptr)[i]);
产生的结果。 - alkprintf("string %d : %s\n",i+1,*(ptr)[i]);
会给出一些垃圾值。但是由于行为未定义,他可能会得到这个结果!! - haccks