void student(int *height,double *score){
*height+=10;
*score+=10;
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
int h=180;//给变量height赋值
double s=90;//给变量score赋值
student(&h,&s);//调用student(int*height,double*score)
printf("%d,%lf\n",h,s);//一次函数调用,返回不同的效果
}
return 0;
}
指针只有在具体的数据类型数组结构中才能进行运算,同一个数组内。
*p++; *(p++); *(p+n);//指针加减运算只是基于数组结构的,出了这个结构就是错误的。
两个指针类型做加法是没有意义的。减法表示的是两个指针内存之间的间隔。
int *p=arr;
用数组名做指针的时候可以写成*(arr+i); 但不能写成*(arr++)会抛错:cannot increment value of type "int [5]"
arr作为数组起始位置的开始,十个常量,不能变的,不可修改。
random为假随机,arc4random为真随机,能获取到0~2的32此方-1的数。
下午:二位数组:面试的时候容易遇到
int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
arr储存的是二维数组中首行首列元素的地址;{1,2,3,4}
int (*p)[4]=arr; arr[0]不是具体某个元素,而是一个地址。
1、例子:答案选D
若有以下定义,
int a[3][4]={{0,1},{2,4},{5,8}},(*p)[4]=a;
则数组为4的表达式是()(选择一项)
a) *a[1]+1
b) p++,*(p+1)
c) a[2][2]
d) p[1][1]
2.答案选D
设有变量定义语句"int a[2][3];",能正确表示数组a中元素
地址的表达式是() (选一项)
a) a[1]+3
b) *(a+2)
c) *(a[1]+2)
d) *(a+1)
3、下列程序的输出结果是(B) (选一项)
int b=2;
int func(int *a)
{b+=*a;return(b);}
main()
{int a=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
a) 4
b) 6
c) 8
d) 10
4、下列程序变量b的运行的结果是 (a)。(选一项)
int a = 1;
int b = a<<1;
a) 2
b) 1
c) 0
d) 运行错误