C语言中*a是什么意思啊?和数组一个用法吗?

C语言中*a是什么意思啊?和数组一个用法吗?
有一个函数
void countValue(int *a,int *n)
{
int i;
*n=0;
for(i=1;i<=1000;i++)
if((i%7==0||i%11==0)&&i%77!=0)
{
*a=i;
*n=*n+1;
a++;
}
}
怎么理解 *a=i;
*n=*n+1;
a++;
??

int *a表示a是一个指针,或者也可以是一个数组名,你可以理解为数组
既然a是指针,那么在指针前面加*号表示对该指针所指向的地址取值
所以*a=i;就是把i的值赋值给a指针所指向的地址的值,说起来有些拗口,其实就是说改变了a这个地址内存的值
*n=*n+1;也是一个道理,表示n指向的地址的值加1
a++;表示a地址加1,就是说本来a指向0x0000,那么现在就变了,a会指向另外一个地址,那么这个地址对应的值也会相应的改变。

建议:先找一本C语言的书,把指针一章的基本概念多理解一下,这些都是基础的东西,需要多体会。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-28
1. 定义数组
int a[10]
a既是数组的名字,也是数组的地址,相当与从a这个地址连续分配了10个int内存地址

2.我们可以设定指针
int *p; //*p是int类型变量,p是指向int变量的指针
p = &a[10] // 将数组的地址赋值给p指针

3.很多人喜欢写成
int *p = &a[10]; //这个语句经常困扰人,可以拆分为 int *p; p = & a[10];

4.我们知道a是数组的地址,同时也是数组内第一个元素的地址,所以
int *p;
p = &a[10] = a;
也就是说a其实就是地址,*a就是指向了数组中的地一个元素,如果你要只想数组中的第i个元素可以写成
*(a+i); 其实*(a+i)==a[i]
*a == a[0]

5. 函数声明
void add(char a[ ]);和 void add(char *a);其实是一样的
因为在编译的时候都是讲数组的地址(就是数组收元素的地址)传递过去

6. 所以在用到数组的时候你只需要数组的第一个元素的地址(也就是函数名)就可以了
int a[];
int *a;
char a[];
char * a;
第2个回答  2009-09-04
*a=i,就是说将i的值赋予*a,使指针a指向的地址中存入i的值。*n=*n+1也很好理解,比如指针n指向的地中之前存入的值为5,则上式的意思就等同于*n=5+1,指针n指向的地址中将存入数值6。a++的意思就是a指向的地址向后移一位。比如之前a指向数组b[0]的地址,则之后将指向b[1]。
第3个回答  2009-09-04
这是个调用函数,没有返回值,
先是把两个地址赋值给a和n,
*a是一个指向整数类型的指针变量,*a=i就是把i得值赋值给*a,
*n=*n+1;就是把*n得值加1再赋值给*n;
a++;这个语句就是把a的值加1再使用
第4个回答  2015-11-19
1、这是一个指针变量
2、和数组不一样,数组可以根据数组下标查找数据,指针取值要加地址偏移量

C语言中*a是什么意思啊?和数组一个用法吗?
意思是取值,也就是a指向空间里面的值 可以和数组类似 a就等效于a[0]比如 int *a;int b=1;a=&b;那么*a就是b的值 也就是1

C语言中*a是什么意思啊?和数组一个用法吗?
int *a表示a是一个指针,或者也可以是一个数组名,你可以理解为数组 既然a是指针,那么在指针前面加*号表示对该指针所指向的地址取值 所以*a=i;就是把i的值赋值给a指针所指向的地址的值,说起来有些拗口,其实就是说改变了a这个地址内存的值 n=*n+1;也是一个道理,表示n指向的地址的值加1 ...

C语言中*a什么意思? 还有a[5] a+ int语句
A,A是个指针变量,*A是地址A中的内容 int a[5];中的那个5表示这个数组最多可以包含五个元素,在引用的时候是a[0] ~ a[4]( a[n] 下标从0开始,到n-1为止),这5个元素,至于a[5],对于这个定义是的使用是非法的,因为他使用了超出数组申请空间以外的空间,就好比使用了不属于自己的东西...

C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?
char *a[]表示的是数组a[]是一个指向char的指针类型数组,相当于a[]里面的每一个元素都实际值都是一个指向字符串的指针(即存储某个字符串的首地址)后面这个你应该要问的是char (*a)[]吧,不然的话就和第一个一样了 char (*a) [N]表示的是指向一个元素为N的字符串数组的指针,说白了就...

c语言中*a与a[ ]的区别,有近似的意思吗?求大神
a是指针,a[]是数组。当*a指向数组a[],默认是第一项a[0].只要将指针移向下一位就到a[1],两位就是a[2].具体用*a++,a++等操作你应该知道 还有一种*a[]是指针数组 具体分类请看下面 ---指针--- int a=10;int *p=&a;---指针的指针--- int b=20;int *p=&b;int **p2p=&p;...

C语言中*a[ ]是什么意思,和*a,a[ ]有什么关系
a:指针a a[]:数组a a[]:指针数组a,数组中存放的元素均为指针 (*a)[]:数组指针a,指向一个数组的首地址

C语言关于指针变量中**a的问题。 求详解
int *a[2] 表示一个指针数组,及a[1],a[2]都各自是一个指针,当直接打a 表示的是这个数组的首地址,*a表示的是取得就是a的首地址里面的内容,相应的就是a[1],而a[1]也是指针,可以再对起取内容,及*a[1],前面说过*a等价于*a[1],所以也可以写作:**a....

C语言指针数组中的 *a[]和 (*a)[]的区别是什么?
a[] 是一个指针数组,也就是一个数组,里面有N个指针 (*a)[]是一个指向数组的指针,也就是一个指针,指向一个数组

c语言中,数组名的前面加*, 如a[3][4]; *a输出的是什么结果
它的值是个int型数值,也就是第1个元素1,而二维数组中的a[3]里存放的是三个元素(3个一维数组)的首地址,因此得出一个结论,二维数组里的第一维就是一个指针数组,每个指针指向三个元素(3个一维数组)的首地址。从而**a就是取第一维里第一个元素(1维数组)里的第1个元素的值。

c语言数组中*a为什么和a【0】相等
因为数组的首地址也就是数组名,你的数组名为a,则 * 意思是取内容,*a就是 a地址的内容 a地址又因为是首地址和a[0]一样,所以可以说*a=a[0]望楼主采纳

相似回答