printf-c++指针指向数组的问题

问题描述

c++指针指向数组的问题

以下代码段在运行时出错:

 printf("%s",(*st.getName()));

其中st.getName()返回一个指向数组头的指针

(* p)无法访问这个数组吗?

解决方案

%s格式后面参数需要字符数组指针,所以用p,不是*p

解决方案二:

有关动态创建释放二维数组,以及指向数组的指针问题集合
有关动态创建释放二维数组,以及指向数组的指针问题集合 .
有关动态创建释放二维数组,以及指向数组的指针问题集合

解决方案三:

那你为什么要加星号呢,你前面定义了吗?

时间: 2025-01-10 04:25:13

printf-c++指针指向数组的问题的相关文章

c语言-C语言指针指向数组问题

问题描述 C语言指针指向数组问题 #include int main(){ int a[5]; int *p,i; printf("please enter ten numbers:"); for(i=0;i<5;i++){ scanf("%d",&a[i]); } for(p=a;p<(a+5);p++) scanf("%d",*p); printf(" "); return 0; } 代码如图,是课本上

c语言-数组指针指向数组的问题

问题描述 数组指针指向数组的问题 int main() { char a[5]={'A','B','C','D'}; char (*p3)[10] = &a; char (*p4)[10] = a; return 0; } int main() { char a[5]={'A','B','C','D'}; char (*p3)[3] = &a; char (*p4)[3] = a; return 0; } 这两个式子怎么理解啊?貌似指针这样指有点问题,面试题上看到的,也是醉的不行.p3+1

php reset() 函数指针指向数组中的第一个元素并输出实例代码_php实例

reset函数将数组的内部指针指向第一个单元,并输出该数组. 基本语法 reset(array) reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值. 参数介绍: 参数 描述 array 必需.规定要使用的数组. 返回值 返回数组第一个单元的值,如果数组为空则返回 FALSE. 实例 <?php $array = array('step one', 'step two', 'step three', 'step four'); // 数组默认指针指向第一个元素 e

指针与数组(二)

[例6-11]用指针法输入输出二维数组各元素.#include<stdio.h>main(){int a[3][4],*ptr;int i,j;ptr=a[0];for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",ptr++);/*指针的表示方法*/ptr=a[0];for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%4d",*ptr++);printf("

深入理解C指针之四:指针和数组

原文:深入理解C指针之四:指针和数组 数组是C内建的基本数据结构,数组表示法和指针表示法紧密关联.一种常见的错误认识是数组和指针完全可以互换,尽管数组名字有时可以当做指针来用,但数组的名字不是指针.数组和指针的区别之一就是,尽管数组的名字可以返回数组地址,但是名字不能作为赋值操作的目标. 概述 数组是能用索引访问的同质元素连续集合.数组的元素在内存中是相邻的,而且元素都是同一类型的.数组的长度是固定的,realloc函数和变长数组提供了应对长度需要变化的数组的技术. 一维数组是线性结构,用一个索

《指针的编程艺术(第二版)》一3.5 指向数组的指针

3.5 指向数组的指针 指针的编程艺术(第二版)ptr[4] 和 (ptr)[4] 所表示的意义是不同的.ptr[4]已在前面讨论过了,而(*ptr)[4]是指向数组的指针(pointer to array){XE "指向陣列的指標(pointer to array)"},表示ptr是一指针,指向一个有4个元素的数组,其实它也可视为是一个二维数组ptr[][4],因为和[]是互通的,我们以范例pointerToArray-1来说明. 范例pointerToArray-1 / point

可以用一个一级指针指向一个二维数组吗?

问题描述 可以用一个一级指针指向一个二维数组吗? 看到书上写的都是二级指针,如int *p[4]等等, 数组不是在内存中的存储是连续的吗, 为什么不用一级指针直接指向第一个元素呢? 解决方案 直接用一个指针,就可以完成指向数组的功能,无论数组是多少维.只是指向后,如果控制下标需要自己考虑.其实,数组名就可以认为是一个静态的指针. 解决方案二: 建议你读下这篇文章http://www.cnblogs.com/wanpengcoder/archive/2010/07/17/1779503.html

指向数组的指针如何用new初始化?

问题描述 int(*b)[3];inta[]={1,2,3};b=&a;上面这段代码可以编译通过,但是使用了数组a,而且规定了b的长度,怎样才能只有一个int(*b)[],然后使用new就把它初始化了? 解决方案 解决方案二:unsafe代码,太高端了--解决方案三:代码应该错了不少.解决方案四:不知道楼主想要的是什么效果,new关键字是用于动态开辟堆内存用的,不能对动态数组进行初始化,只能对一个对象进行初始化,如int*p=newint(1);通过int*p=newint[10](1);编译错

求大神讲解一下指针指向二维数组时该怎么用?

问题描述 求大神讲解一下指针指向二维数组时该怎么用? 指针指向一维数组时只用*(p+n)即可,但是二维数组时候改怎么用呢? 解决方案 个人认为其实二维数组还是一维数组,没有什么区别,例如int a[3][4],就相当于int a[12].要想访问a[2][3],就用*(a+(4*2+3)*(sizeof(int))),应该是这样,不过我一般用a[4*2+3] 来访问对应的元素 本人也是菜鸟,如果有错还请大神们指正~ 解决方案二: 由于指针与数组之间可以若转化,所以在一定程度上可以理解为数组就是指