|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 BaysideLizard 于 2023-10-17 11:52 编辑
- int a=1,b=2,c=3,d=4,e=5,i;
- int *p1[5] = {&a,&b,&c,&d,&e};
- for (i = 0;i < 5;i++)
- {
- printf("%d ",*p1[i]);
- }
复制代码
问题1:我知道 p1 是一个指针数组,但是这个int是指指针的类型还是数组的类型?
- char *p2[5] = {"C","Java","PHP","C++","Python"};
- for (i = 0;i < 5;i++)
- {
- printf("%s ", p2[i]); //这里有问题
- }
复制代码
问题2:为什么字符指针数组这里p2[i]前不用加取值符*?
问题1:
p1是一个指针数组,每个元素都是int类型的指针。可以将p1视为一个数组,其中每个元素都存储了int类型变量的地址。
在代码中,p1的声明为 int *p1[5],表示p1是一个包含5个元素的数组,每个元素的类型是int指针(int*)。
通过初始化语句 {&a,&b,&c,&d,&e},将a、b、c、d、e的地址分别存储到了p1的五个元素中。因此,p1[0]指向a的地址,p1[1]指向b的地址,依此类推。
在循环中,通过解引用符号 *p1[i],可以取得p1[i]指向的地址对应的值(即a、b、c、d、e的值),然后通过printf函数打印出来。
问题2:
p2是一个字符指针数组,每个元素都是指向字符的指针。可以将p2视为一个数组,其中每个元素都存储了指向字符串常量的指针。
在代码中,p2的声明为 char *p2[5],表示p2是包含5个元素的数组,每个元素的类型是char指针(char*)。
通过初始化语句 {"C","Java","PHP","C++","Python"},将五个字符串常量的首地址分别存储到了p2的五个元素中。
在循环中,通过p2[i]直接获取到指向字符串常量的指针,而不需要使用解引用符号。因为字符串常量本身就是一个指向字符的地址,所以直接打印p2[i]会输出该字符串常量。
综上所述,字符指针数组中的每个元素存储了一个字符串常量的地址,而不同于普通的变量。因此,在输出字符指针数组时不需要使用解引用符号。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|