int main()
{
int A[5],B=A;
B[1]=2;
cout<<A[1]<<endl;
return 0;
}
是可以的,因为B=A,B存放是数组A开始地址,B[1]表示以开始地址为准第二个整数存储单元的存放的数值与A[1]存储单元的所放的值是相同给你个例子
#include <iostream>
using namespace std;
int main()
{
//问题1解答
char p = "123456";
int len = strlen(p)+1;
char a[len];
for(int i=0; i<len; ++i)
{
a[i] = p[i];
cout<<"==== "<<p[i]<<" ===="<<endl;
}
//问题2解答
char q;
q = a;
cout<<"=== "<<q<<" ==="<<endl;
return 1;
}
问题1:
可以
问题2:
可以直接把p指向该数组的首地址,或者向问题1那样复值#include<stdioh>;
#include<stringh>;
int main()
{
char c, s[20], p;
int a=1234, i;
float f=3141592653589;
double x=012345678987654321;
p="How do you do";
strcpy(s, "Hello, Comrade";
i=12;
c='\x41';
printf("a=%d\n", a); /结果输出十进制整数a=1234/
printf("a=%6d\n", a); /结果输出6位十进制数a= 1234/
printf("a=%06d\n", a); /结果输出6位十进制数a=001234/
printf("a=%2d\n", a); /a超过2位, 按实际值输出a=1234/
printf("i=%4d\n", i); /输出4位十进制整数i= 12/
printf("i=%-4d\n", i); /输出左对齐4位十进制整数i=12/
printf("i=%p\n", i); /输出地址i=06E4/
printf("f=%f\n", f); /输出浮点数f=3141593/
printf("f=64f\n", f); /输出6位其中小数点后4位的浮点数
f=31416/
printf("x=%lf\n", x); /输出长浮点数x=0123457/
printf("x=%1816lf\n", x);/输出18位其中小数点后16位的长浮点
数x=01234567898765432/
printf("c=%c\n", c); /输出字符c=A/
printf("c=%x\n", c); /输出字符的ASCII码值c=41/
printf("s[]=%s\n", s); /输出数组字符串s[]=Hello, Comrade/
printf("s[]=%69s\n", s);/输出最多9个字符的字符串s[]=Hello,
Co/
printf("s=%p\n", s); /输出数组字符串首字符地址s=FFBE/
printf("p=%s\n", p); / 输出指针字符串p=How do you do/
printf("p=%p\n", p); /输出指针的值p=0194/
getch();
retunr 0;
}指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。
数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。
比如说定义int w
然后下边就可以用作w[i]
这么对吗?
对的话在什么情况下可以这么使用?
答:不可以,因为w这时还是野指针。只有这样
int w,a[44];
w=a;
*** 作后才可以, *** 作w就与 *** 作a一样了。而且, *** 作指针比直接 *** 作数组名更方便,因为指针是变量,可以++、--,而数组名是常量,不能++、--。
你追问的那个红框框中的问题不是指针与数组名的问题,而是“形式参数”与“实际参数”的问题。写函数定义的()中的前面带类型说明符的变量名叫形式参数。形参与实参相比,最大的特点就是不用担心没有赋值或初始化就拿来引用,它们是留着调用时才用实参自动赋值的。而实参则不然,没有赋值时拿来做右值,就会被警告“引用了没有初始化的变量”,而且因为初值是随机的而结果一般都是错误的。绝对不会!只定义(实际上是说明)一个指针那指针还是野指针,当右值使用会带来不可预见的后果。只有为指针动态分配了内存或用合法的数组或字符串等数据集合初始化了它,才可以用类似 *** 作数组的方式来 *** 作它指向的内容;指向其他类型数据的指针一般是不能像 *** 作数组一样 *** 作它指向的内容的。供参考……int sumArray(int a, int n)
{
int i, sum = 0;
for(i = 0; i < n; i++)
{
sum += (a + i);
}
reutnr sum;
}
可以更简短点,但是可读性可能有点差:
int sumArray(int a, int n)
{
int sum = 0;
while(n--)
sum += a++;
reutnr sum;
}第4个,申请空间错了
char t = (char )malloc(sizeof(char)strlen(s));
还有不要p='\0';
#include <stdioh>
#include <stringh>
#include <stdlibh>
int main(int argc, char const argv[])
{
char s="hello";
char p=strchr(s,'l');
// p='\0';
char t=(char )malloc(sizeof(char)strlen(s));
strcpy(t,s);
printf("%s\n",t);
free(t);
getch();
return 0;
}你所说的数组指针float (p)[3],确切的说应该是行指针。 二维数组可以用指针数组来引用,也可以用行指针来引用。 在计算机等级考试教程的书上有比较详细的介绍,你可以参考一下!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)