指针实际就是实体的代表而已,不过指针是个实体的存放地址;可以进行地址运算;
公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出宜良免费做网站回馈大家。
如:p++,指针指向下一地址;p=q以q指针指向地址作为p指针的地址;
普通的用法是,声明实体或实体数组,用指针指向实体的地址:实体 b,g[8],*p;
p=b;数组名称实际就是固定长度的指针,所以常有:p=g;p=g+2相当于p=g[2];
如函数 void fun(int b[]);可以用int *p;fun(p)来调用;p代表数组b;
如函数 void fun(int *p);可以用int b[6];fun(b)来调用;b相当于指针p;
在我的系统中运行你 的程序和你想的一样,是8不是7.
string 1,string 2:
it's a boy
boy
offset 8 "boy"in"it's a boy"
所谓指针就是地址,只是指针会区别它是什么指针,对应的数据占多大内存。如subst,str都是char*类型的,他们是字符指针,所以他们指向的类型是字符。*str和str[0]的含义是一样的,意思是取得首字符。在c语言中字符串就是用字符指针来表示的,对应的是“%s”,而加上了*,是取这个字符指针地址的内容,也就是一个字符,用“%c”表示。所以你打印的是字符串,就应该用%s。
#include "stdio.h"
char *strins (char* s1, char* s2) {
int a = 0, b = 0;
while (s1[a++]);
while (s2[++b]);
while (a--) {
s1[a + b] = s1[a];
}
while (b--) {
s1[b] = s2[b];
}
return s1;
}
int main() {
char s1[20];
char s2[20];
gets(s1);
gets(s2);
printf("c:%s", strins(s1,s2));
}
void leftMax(int *left,int *right)
{int max,min;
max=*left*right?*left:*right;
min=*left*right?*right:*left;
*left=max;
*right=min;
}
main()
{int A,B;
printf("A=%d B=%d\n",A=2,B=3);
leftMax(A,B),printf("A=%d B=%d\n",A,B);
printf("A=%d B=%d\n",A=5,B=3);
leftMax(A,B),printf("A=%d B=%d\n",A,B);
}
#include "stdio.h"//
void fun0(int n){
printf("这是%d号函数的打印输出。\n",n+1);
}
void fun1(int n){
printf("这是%d号函数的打印输出。\n",n+1);
}
void fun2(int n){
printf("这是%d号函数的打印输出。\n",n+1);
}
void main(void){
void (*ptr[3])(int)={fun0,fun1,fun2};
int n;
printf("Type 1,2 or 3\nn=");
scanf("%d",n);
n--;
ptr[n](n);
printf("\n");
}
首先,这个代码连编译的过不了
单从你主函数的x=sub(p,q,3),我也不知道你那是q还是9。
忽略编程的角度,单从题目的大意,把你的q当做是9
x = sub(p,9,3) = funa(9,3) = 9+3 = 12;
x += sub(funb,8,3),x = x+funb(8,3) = 12 + (8-3) = 17
结果是17