#include <stdio.h>
#include <stdlib.h>
main(){
int a[10] = { 5, 4, 9, 1, 10, 7, 8, 3, 2, 6 };
int *p = a;
int *pend = a + 10;
for ( ; p < pend ; p++ )
printf("%d ", *p);
system("PAUSE");
}
*pend=a+10;
这个地方我很不理解,a是数组的首地址,a+10是地址加上10,而p是指针,应为是整形数组整形在内存上是占2个字节的,p++实际上就等于p+2一直加下去,最后的地址结果就是相当于p+20,就是说等于a+20,但是这个程序执行时并未输出一半,而是全部输出这个是为什么呢?
a+1-----往后移动sizeof(int)个字节
p++-----往后移动sizeof(int)个字节
a+ 10= 数组a的首地址10*sizeof(int)
a+ 10= 数组a的首地址加上10*sizeof(int)
a不是一个地址吗?为何不是单单的加上10,而合指针p一样,加上10*sizeof(int)?这个地方很不理解谢谢大家了。
对比a和p的类型!!
编译器就所这样做的;如果是float p+10就所地址+sizeof(float);如果是结构体;就所sizeof(struct aa)
相关问答:
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
两个文件1.PC,1.inc
1.PC有操作oracle数据库的 ,1.inc也有操作oracle数据库
在其他数据中如informix 中$include 1.inc就可以使用了
在ORACLE数据库重 $include 1.inc不可用 EXEC SQL include 1.inc也不可 ......
我这里有一个登陆WIFI网络的页面。由于WIFI经常断线,所以要反复地在这个网页上登陆,没法无人值守。
所以,我想做一个C#程序,放一个webbrowser控件,自动填表并自动点击提交按钮。
问题一:
基本照网上找的程序 ......
如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。
不会.
运行java程序
找工具查看一下那个程序的命令行
搜索下:jni ......
我只学过清华蓝封面的C语言基础,想更深入的学习,该看什么书好?
C Primer Plus
C程序设计语言(第2版新版)
C语言程序设计_现代方法
C语言参考手册第五版
C语言大全
C和指针
C陷阱与缺陷
C专家编程
......