⑴ c语言 数组引用问题
s本身代表的是数组元素首地址,如果像D的引用方式,会超出数组的范围。
你这个程序大概是不是这样:
char s[100];
for(int i = 0;i>=0&&i<=89;i++)
{
*((s++)+i); //如果是这样,s每次要加一次,i也要加一次,最后肯定要超出数组范围。
}
希望没错。
⑵ 在C语言中数组的引用
引用第一个下标得到的第一个的地址,你说的字符型应该是指的C类型的字符串,它之所以可以被一行一行的用,是因为使用这个首地址来引用的函数识别他的字符串结束符也就是零,就像平常的STRCPY和STRLEN都是用零来做为一个字符串的结事符,所以你告诉他首地址他就可以自己定位到字符串的结尾了。
⑶ C语言数组是“引用类型”么
引用类型是相对于值类型说的
值类型传递时,复制出一个新副本出来
引用类型不会复制出新副本,相当于指针,传递的是对象指针,对象的内存首地址,而不是整个对象。我的理解就是,类都是引用类型,结构体和int/uint/byte这些都是值类型
int a = 10;
test(a); // 值传递 相当于 int b = a; 也就是 int b = 10;
object obj = new object();
test2(obj); // 引用传递
void test(int b)
{
....
}
void test2(object obj)
{
....
}
那些类对象有个方法名叫 Clone 也就是克隆,也就是因为 = 号只是引用传递,所以无法复制出一份副本出来,所以才需要和弄出了这个克隆函数,才能通过此方法复制出副本出来
⑷ c语言 定义一个数组和引用数组有什么区别
在C语言中使用数组必须先进行定义。一维数组的定义方式为:
类型说明符 数组名 [常量表达式];
其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
- int a[10]; /* 说明整型数组a,有10个元素 */
- float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */
- char ch[20]; /* 说明字符数组ch,有20个元素 */
数组名[下标]
其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如:
a[5]
a[i+j]
a[i++]
都是合法的数组元素。
⑸ 关于C语言中数组元素的引用问题
A:
int
**pp;表示pp所指的是一个二维数组,所以它的引用可以这样用pp[][]的形式;
D:
因为p[i]=&a[i*4];有p[0]=&a[0],所以*(p+2),
即p[2],指的是a[8];
*(*(p+2)+2)指的就是a[10];
p[0]->
a[0]
a[1]
a[2]
a[3]
p[1]->
a[4]
a[5]
a[6]
a[7]
p[2]->
a[8]
a[9]
a[10]
a[11]
C的错误就在于行指针超出范围:最大只能是2
⑹ C语言中二组数组的引用
用法是对的
a[0]相当于一个 char[20] 类型的字符串
也就是“一行”
后面的下标如果加上的话,就代表 char 类型的变量了
要或不要,重要的是看代表什么类型
⑺ C语言数组地址引用正确的是
int c[4][5],(*cp)[5];
cp=c;
这里cp是二维数组c的首地址 cp本身也是二维数组
正确的是:C
*(*cp+2) *cp是cp[0][0]的地址 *cp+2就是cp[2][0]的地址
*(*cp+2) 就是cp[2][0]的值
其余的引用都是引用的地址
要想引用二维数组的元素值 必须使用两个**
希望能帮助你哈
⑻ C语言数组引用
1 定义时不能用变量。如下面是错误的。
int i=10;
int a[i]; //定义时用就是,这个是错误的。
2 你的程序是正确的。访问数组元素时,可以用变量。
⑼ C语言问题,对C数组元素正确引用的是
解:
int c[4][5],(*cp)[5];
cp=c;
这里cp是二维数组c的首地址 cp本身也是二维数组
正确的是:C
*(*cp+2) *cp是cp[0][0]的地址 *cp+2就是cp[2][0]的地址
*(*cp+2) 就是cp[2][0]的值
其余的引用都是引用的地址
要想引用二维数组的元素值 必须使用两个**
希望能帮助你哈
⑽ C语言数组的引用
int x[10]里面有十个元素为x[0]道x[9]
首先,指针是特殊的变量,比如int *p;如果不加*号,你可以把p当作一个普通变量,而这个变量中存放的东西是一个内存地址.如果你只想得到这个地址,直接用p,但是如果你想得到这个地址中存的数据内容,就要加一个运算符*