C_Pointer

作者: 窗前的樱花 | 来源:发表于2018-05-15 00:56 被阅读0次

int  *ptr;

*ptr=5;//一个可怕的错误

ptr并没有被初始化,它的值是随机的,因此不知道5被存储在什么位置。当创建一个指针时,系统只分配了用来存储指针本身的内存空间,并不分配存储数据的内存空间。


const int a[2]={1,3,4,5,6};//保证数组的内容不被改变

以下代码中:

#include#define SIZE 5

void show(const double ar[], int n);

void mult_array(double ar[], int n, double mult);

void show(const double ar[], int n)

{

int i;

for (i = 0; i < n; i++)

printf("%8.3f ", ar[i]);

putchar('\n');

}

void mult_array(double ar[], int n, double mult)

{

int i;

for (i = 0; i < n; i++)

ar[i] *= mult;

putchar(10);

}

int main()

{

const double arr[SIZE] = { 1, 2, 3, 4, 5 };

show(arr, SIZE);

mult_array(arr, SIZE, 5);

show(arr, SIZE);

return 0;

}

arr数组即使加了const修饰,在mult_array中仍然能通过运行,在调用之后,成功修改了arr数组的值。


还是与上一个有关,假设:

int var=5;

const int  *p1=&var;//不能通过修改*p1来改变var的值

int *p2=p1;//可以把p1赋值给一个指向非常量的指针p2,通过修改p2的值来修改var的值

(上面语句在c++中编译不通过,Only c)(IDE是vs2013)

c-primer-plus也说这种赋值是不可以的,只有非常量数据的地址才能赋值给普通的指针


可以用#define 定义字符串常量,字符串常量属于静态存储类(一份拷贝,多次使用),整个引号的内容作为指向该字符串存储位置的指针。

printf("%c %c\n",*"howell",*("howell"+1));

如果“howell”是一个地址,那么第一个%c输出的应该是howell所指向的地址中的值,第二个%c应该是howell所指向的地址的下一个地址的值。结果是“h  o”

指定字符串数组大小时,一定要保证数组长度比字符串长度至少多1.

数组和指针:

char *head1="I love programming";

char head2[]="I love programming";

两者都可以用数组符号,如head1[1],head2[1];也都可以用指针加法,*(head1+i),*(head2+i)


#include<sys/time.h>

int gettimeofday(struct timeval *tv,NULL);//将从1970年元旦开始计时经过的时间赋值给struct

struct timeval

{
        time_t tv_sec;//秒数

        suseconds tv_usec;//微妙数

  };

int main()

{   

strcut timeval *pval;

gettimeofday(pval,NULL);//此处调用会出现错误,原因是并不知道pval指向什么位置,就类似于

//int *p=3;

}

正确的写法应该是:

struct timeval val;

gettimeofday(&val,NULL);


struct A{

int aa;

};

struct B{struct A *pa;};

strcut B *pb=malloc(sizeof(struct B));之后,struct A还是要重新申请内存空间

相关文章

  • C_Pointer

    int *ptr; *ptr=5;//一个可怕的错误 ptr并没有被初始化,它的值是随机的,因此不知道5被存储在什...

  • SAP ABAP 编程语言里的%_c_pointer代表什么

    这是一个比较冷门的ABAP知识点。图一的代码,能顺利编译并执行。这个%_c_pointer代表什么?其实在ABAP...

网友评论

      本文标题:C_Pointer

      本文链接:https://www.haomeiwen.com/subject/usaddftx.html